首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SBJSON解析JSON

使用SBJSON解析JSON
EN

Stack Overflow用户
提问于 2014-06-23 12:33:37
回答 2查看 63关注 0票数 0

我得到了一个预测形式的JSON响应。所以这棵树是这样的:

代码语言:javascript
复制
{ "data":{
           "img":"image":"http:\/\/testingpage.com\/images\/frog_320x480_23.jpg",      
           "link":"http:\/\/google.com","verbose":"Hi there"}, 
           "figures":[ 
                       { "ID":"16","TYPE":"sailor","COLOR":"1E90FFFA","ICON":"sailor"},
                       {"ID":"32","TYPE":"pilot","COLOR":"32CD32BC","ICON":"pilot"}
                     ]
          }
}

我正在使用SBJSON库。

我得到了我的价值观

NSString *jsonString = [NSString alloc initWithData:iData编码:NSUTF8StringEncoding];NSDictionary *results = jsonString JSONValue;

拿到我需要的钥匙:

结果objectForKey:@"keyname"]

到目前一切尚好。

刚才发生的事情是,我从一个不同的提供者那里得到了一个回应,结果在本质上完全不同:

代码语言:javascript
复制
[
     { "TEMPValues": {
                   "temp1": 13.2,
                   "temp2":11.1, 
                   "temp3":11.2,
                   "temp4":13.4
                 }, 
       "semipath":"pollution", 
       "value":"AXT" 
      },
      { "TEMPValues": {
                   "temp1":19.3,
                   "temp2":12.1, 
                   "temp3":10.8,
                   "temp4":13.1}, 
        "semipath":"pollution",
        "value":"AUT"
      }
]

我这里有两个问题:

  1. 我不知道如何访问这些值,因为它们位于根数组中。这个数组没有我可以引用的键。那么,这种结构的做法应该是什么呢?如果需要获取数组中TEMPValues的第一个对象的TEMPValues
  2. 每当我试图使用results objectForKey:@"keyname"]获得一个值时,我都会得到一个SIGABRT,因为results被识别为一个数组
EN

回答 2

Stack Overflow用户

发布于 2014-06-23 12:36:22

首先创建值数组

代码语言:javascript
复制
NSArray *results = (NSArray *)[jsonString JSONValue];

之后,迭代这个数组。

代码语言:javascript
复制
for(int i= 0; i < results.count; i++) {
    NSDictionary *dic = (NSDictionary *)[results objectAtIndex:i];
}
票数 1
EN

Stack Overflow用户

发布于 2014-06-23 12:43:38

你必须做类似的事情。

代码语言:javascript
复制
  -(void) retrieveData{
       NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"yoururl"]];

      [request setHTTPMethod:@"GET"];

      [request setValue:@"application/json;charset=UTF-8" forHTTPHeaderField:@"TEMPValues"];

      NSError *err;

      NSURLResponse *response;

      NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&err];

      NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:responseData options: NSJSONReadingMutableContainers error: &err];


     variable=[[jsonArray objectAtIndex:0]objectForKey:@"keyname"];
   }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24366059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档