[英]Help needed to parse json for iPhone
我想在我的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",
}]
}]
可以帮助我如何提取“ 123”的所有img_urls。
谢谢。
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"]]; } }
对象“ 123”的值将是NSDictionaries的NSArray。 这些词典中的每一个都有一个用于图像URL的键“ image_url”。
代码将取决于您使用的JSON解析库,但基础知识应该相同。
首先,您需要采用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;
希望这可以帮助!
好吧,如果那个数组叫做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);
我之前从未使用过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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.