从我的项目中的Json解析我得到这些元素......
执行指令: -
NSArray *feed3 = (NSArray *)[feed valueForKey:@"type"];
NSLog(@" %@",feed3);
在控制台中我得到了这个
( 状态,
照片,
链接,
视频)
现在我想检查这些元素的条件..
喜欢
if(type==staus){
//do some thing
}
如何在xcode中执行此操作?
答案 0 :(得分:1)
我假设feed3
是解析了您在另一个问题中列出的JSON数据后由JSON解析器返回的对象。在那种情况下:
* the top level object is an array
* every element in the array is an object/dictionary representing news
* this object/dictionary contains the following keys:
* application (object/dictionary with two keys: id, name)
* id (number)
* name (string)
* created_time (string)
* from (object/dictionary with two keys: id, name)
* id (number)
* name (string)
* icon (string)
* id (string)
* likes (object/dictionary with two keys: count, data)
* count (number)
* data (array)
* every element in the array is an object/dictionary
* this object/dictionary has two keys (id, name)
* id (number)
* name (string)
* link (string)
* name (string)
* picture (string)
* properties (array of objects/dictionaries)
* type (string)
* updated_time (string)
在解析JSON数据时,至关重要可以了解数据的组织方式。我建议你每当必须解析JSON时总是这样做。
由于您对'type'感兴趣,因此您需要遵循以下路径:
以下代码可以解决这个问题:
for (NSDictionary *news in feed3) {
NSString *type = [news objectForKey:@"type"];
if ([type isEqualToString:@"status"]) {
…
}
else if ([type isEqualToString:@"photo"]) {
…
}
else if ([type isEqualToString:@"link"]) {
…
}
else if ([type isEqualToString:@"video"]) {
…
}
}
请注意,一般情况下,您应使用-objectForKey:
代替-valueForKey:
:
-objectForKey:
是NSDictionary
中声明的方法,它用于获取存储在字典中的对象,并给出相应的密钥。-valueForKey:
是一种KVC方法,可用于其他目的。特别是,当你不期待它时,它可以返回一个数组!答案 1 :(得分:0)
检查以下
for(int index = 0 ; index < [feed3 count] ; index++)
{
NSString* tempString = [feed3 objectAtIndex:index];
if([tempString isEqualToString:@"status"])
{
//Get value for status from value array
}
else if([tempString isEqualToString:@"photo"])
{
//Get value for photo from value array
}
else if([tempString isEqualToString:@"link"])
{
//Get value for link from value array
}
else if([tempString isEqualToString:@"video"])
{
//Get value for video from value array
}
}