繁体   English   中英

解析iPhone版JSON所需的帮助

[英]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);

演示: http : //jsfiddle.net/maniator/Vx3hu/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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM