如何提取JSON数组?

时间:2016-07-06 06:13:09

标签: ios objective-c json parsing nsarray

如何提取JSON数据dictionary。我尝试了很多次,但不能提取特定的价值。我只得到第一个“business_category_name”,但“business_details”在值“name”不能获取。怎么可能请帮忙。

谢谢

我的JSON数据

{
 "status": [
{
  "business_category_name": "Banks\/Credit Unions\/Landers",
  "business_details": [
    {
      "img_url": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1464667619-pnc.jpg",
      "name": "PNC Bank",
      "des": "PNC offers a wide range of services for all our customers, from individuals and small businesses, to corporations and government entities",
      "address": "",
      "email": "andrea.kendall@pnc.com",
      "phone": "260-422-5922",
      "member_since": "2016-05-31",
      "img_company": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/member-logo\/1464667619-pnc.jpg",
      "website": "",
      "city": "Fort Wayne",
      "state": "IN",
      "zip": "46808"
    }
  ]
},
{
  "business_category_name": "Cleaning Services",
  "business_details": [
    {
      "img_url": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/uploads\/logo250.png",
      "name": "tsst company",
      "des": "rudurgg ",
      "address": "2005 s calhoun ",
      "email": "",
      "phone": "2602496687",
      "member_since": "2016-05-31",
      "img_company": "http:\/\/edutimeapp.com\/toshow\/chamber-of-commerc\/uploads\/logo250.png",
      "website": "",
      "city": "fort wayne",
      "state": "in",
      "zip": "46825"
    }
  ]
}
 ]
 }

我的代码

- (void)viewDidLoad {
    [super viewDidLoad];
    NSURLRequest *req=[[NSURLRequest alloc]initWithURL:[NSURL  URLWithString:@"my url"]];
    response =[[NSMutableData alloc]init];
    [NSURLConnection connectionWithRequest:req delegate:self];
}

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
     NSError *error;
     NSLog(@"Error in receiving data %@",error);
     NSMutableDictionary *json = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves  error:&error];
     NSLog(@"response data %@",json);
     NSArray *items = [json objectForKey:@"status"];
     pass = [items valueForKey:@"business_category_name"];
     NSLog(@"get category %@",pass);
}

3 个答案:

答案 0 :(得分:1)

你可以做点什么,

NSArray *items = [json objectForKey:@"status"];

NSDictionary *firstObjOfItems = [items objectAtIndex:0];

NSString *business_category_name = [firstObjOfItems valueForKey:@"business_category_name"];

NSArray *business_details_Array = [firstObjOfItems objectForKey:@"business_details"];

NSDictionary *first_Object_of_business_details = [business_details_Array objectAtIndex:0]
;

NSString *name = [first_Object_of_business_details valueForKey:@"name"];
NSLog(@"name : %@",name);

您可以同样获取其他参数。你应该使用for循环来遍历每个对象。这只是如何到达json数据中的end元素的示例。

希望这会有所帮助:)

答案 1 :(得分:0)

如果您只想从数组中获取一个字典,请尝试使用

System> configuration>Advanced >Advanced

如果你想获取所有试试这个。

创建一个可变数组并在其中添加所有名称并加载到tableview中,如下所示

NSArray *statuses = [json objectForKey:@"status"];

for(NSDictionary *status in statuses){
   NSString *bussiness_category=[status valueForKey:@"business_category_name"];

   NSString *name=[[[status objectForKey:@"business_details"] firstObject] valueForKey:@"name"];

}

希望它有所帮助。

答案 2 :(得分:0)

这里dataFromApi是字符串JSON格式;

NSData *objectData = [dataFromApi dataUsingEncoding:NSUTF8StringEncoding];
id collection = [NSJSONSerialization JSONObjectWithData:objectData options:0 error:&error];

收到收集后,您可以使用键值对查找数据。

ex = string add = collection[@"name"];