我想在我的iphone应用程序中解析JSON文件。问题是我可以解析简单的json文件,但我很困惑如何解析以下类型的json:
[{"123":
[{ "item_id":"222",
"image_count":"2",
"image_filetype":".jpg",
"image_url":"http:\/\/someurl.jpg",
},
{"item_id":"333",
"image_count":"2",
"image_filetype":".jpg",
"image_url":"http:\/\/someurl.jpg",
}]
}]
有些人可以帮助我如何提取所有img_urls为“123”。
谢谢。
答案 0 :(得分:3)
NSString *jsonString = …;
// The top-level object is an array
NSArray *array = [jsonString JSONValue];
// The first element in the array is an object containing a name-value
// pair for the key/name "123". The value is itself an array
NSArray *itemsIn123 = [[array objectAtIndex:0] objectForKey:@"123"];
// Use Key-Value Coding to get an array of all values for the key
// image_url
NSArray *imgurls = [itemsIn123 valueForKey:@"image_url"];
<小时/> 根据评论进行修改:
由于顶级数组可能包含多个对象,每个对象都有一个名称未知的名称 - 值对,因此需要手动迭代顶级数组:
NSString *jsonString = …;
NSMutableArray *imgurls = [NSMutableArray array];
// The top-level object is an array
NSArray *array = [jsonString JSONValue];
// Each element in the top-level array is an object
for (NSDictionary *outerObject in array) {
// Iterate over all values in the object. Each (single) value is an array
for (NSArray *innerArray in [outerObject allValues]) {
[imgurls addObjectsFromArray:[innerArray valueForKey:@"image_url"]];
}
}
答案 1 :(得分:2)
对象“123”的值将是NSDictionaries的NSArray。这些词典中的每一个都具有图像URL的关键“image_url”。
代码将取决于您使用的JSON解析库,但基础应该是相同的。
答案 2 :(得分:2)
首先你想要获取像123,112,189这样的关键值,这样我们就可以把键带到一个数组中
说像[Web {123 {image url} 112 {image url} 189 {image url}]
这样的结构所以
NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
SBJSON *jsonParser = [SBJSON alloc]init];
NSMutableArray *yourArray1 = [jsonParser objectWithString:responseString]copy]]autorelease;
ufArray = [[yourArray1 valueForKey:@"web"] copy];
for (NSString *s in ufArray) {
[keys addObject:[NSDictionary dictionaryWithObjectsAndKeys:s,@"keys",nil]];
}
NSLOG(@"keys :%@",keys);
// this will contain 112,123,114 etc values
initialize a NSMutableArray
finalArray = [NSMutableArray alloc]init];
for (int i = 0; i < [ufArray count]; i ++) {
yourArray1 = [ufArray valueForKey:[[keys objectAtIndex:i]valueForKey:@"keys"]];
// [keys object at indes:i] - > 123 val / next loop 112 array like that
[finalArray addObject:yourArray1];
}
[jsonParser release];
jsonParser = nil;
希望这有帮助!
答案 3 :(得分:-3)
如果该数组被称为jArray
var img_urls = [];
var jL = jArray[0][123].length;
var img_urls = [];
for(var i = 0; i < jL; i++){
img_urls[i] = jArray[0][123][i].image_url;
}
//display in console:
console.log(img_urls);
答案 4 :(得分:-4)
我之前从未使用过JSON,之前从未使用过iPhone,之前从未使用过Xcode ......但我会认为它的内容沿着... ...
//object and image for item ID 222
123: item_id(222).image_url("some_url")
或第二项及以下项目
//hi
123: item_id(333).image_url("some_url")
然而,当你可以通过使用项目ID和图像ID来提取没有URL的图像时,更好的是,所以当调用对象123时,你可以指定项目id和图像id,然后输出所有您需要的信息。例如,可以显示计数,文件类型和图像。
123: item_id(222).image_id(222)
数据文件是SQL还是XML? XML通常更快!所以请在节点上阅读。
希望有所帮助。
DL