2013-06-05 46 views
0

我使用的URL的訪問JSON文件
我得到這個從下面的代碼查閱字典從Json的URL

NSData* data=[jsonString dataUsingEncoding: [NSString defaultCStringEncoding] ]; 
    NSError *error; //where jsonString is string of URL 
    NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; 


    if (jsonDictionary==nil) { 
    NSLog(@"Error::Loading"); 

}else 
{ 

    NSArray *array = [jsonDictionary objectForKey:@"categories"]; 
    for (int i=0; i<[array count]; i++) { 
     NSMutableDictionary *dic = [[NSMutableDictionary alloc] init]; 
     [dic setValue:[[array objectAtIndex:i] valueForKey:@"cat_id"] forKey:@"cat_id"]; 
     [dic setValue:[[array objectAtIndex:i] valueForKey:@"cat_name"] forKey:@"cat_name"]; 
     [dic setValue:[[array objectAtIndex:i] valueForKey:@"cat_image"] forKey:@"cat_image"]; 
     [dic setValue:[[array objectAtIndex:i] valueForKey:@"cat_list"] forKey:@"cat_list"]; 
     [newsArray addObject:dic]; 

     [categoryArry addObject:[dic valueForKey:@"cat_name"]]; 
     [categoryId addObject:[dic valueForKey:@"cat_id"]]; 
     [categoryImage addObject:[dic valueForKey:@"cat_image"]]; 
     [categoryList addObject:[dic valueForKey:@"cat_list"]]; 
     [dic release]; 


    } 
} 

,並得到JSON結構類似這樣的

{ 
    "categories": [ 
     { 
      "cat_id": "15", 
      "cat_name": "Shop", 
      "cat_image": null, 
      "cat_list": [ 
       { 
        "sub_cat_name": "New Arrivals", 
        "Cat_Data": [ 
         { 
          "prod_name": "Generals Coat Biege", 
          "prod_price": "215.0000", 
          "prod_image": "honey_beau_lookbook_winter13_febmarch-24.jpg" 
         } 
        ] 
       } 
      ] 
     } 
    ] 
} 

categoryArry只包含INE值「商店」
但我想訪問categoryArry中的「sub_cat_name」,並跳過店級....

總之我想將「sub_cat_name」存儲到categoryArry中。

+0

有什麼可以阻止你這樣做嗎? – 2013-06-05 12:24:12

+0

我想只跳過「cat_name」:「Shop」級別和使用從「sub_cat_name」..... – Denny

+0

是的,我明白,你的問題是什麼? – 2013-06-05 12:30:03

回答

0

當然,你只需要做:

NSArray *catlist = [dic valueForKey:@"cat_list"] 
NSDictionary *firstcat = [catlist objectAtIndex:0]; 
NSString *subcatname = [firstcat valueForKey:@"sub_cat_name"]; 

這是假設,當然,你有cat_list陣列中的至少一個項目。

0

我使用名爲AFNetworking的第三方庫進行JSON請求並解析響應。

下面是一個例子:

AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:@"http://yoursite.com"]; 

NSMutableURLRequest *request = [httpClient requestWithMethod:@"POST" 
                  path:@"blah/path" 
                 parameters:@{@"jsonKey":@"jsonValue"}]; 
AFJSONRequestOperation *operation = [AFJSONRequestOperation 
            JSONRequestOperationWithRequest:request 
            success:^(NSURLRequest *request, NSHTTPURLResponse *res, id json) { 

            // Use the json here  
            json[@"categories"][0][@"cat_list"]; 

           } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id json) { 
            //Handle Errors 
           }]; 
[operation start]; 
0

在你的代碼替換:

[categoryArry addObject:[dic valueForKey:@"cat_name"]]; 

通過

[categoryArry addObject:[[dic valueForKey:@"cat_list"][0]] valueForKey:@"sub_cat_name"]; 

反正你可以使用jsonDictionary,而不是直接創建另一個dict的。