2014-08-16 5 views
-2

Я только учусь кода в Xcode, поэтому вопрос может быть довольно легко)Как разобрать JSON с использованием API Cocoa?

У меня есть пример кода:

NSData *jsonSource = [NSData dataWithContentsOfURL: 
         [NSURL URLWithString:@"http://gooruism.com/feed/json"]]; 

id jsonObjects = [NSJSONSerialization JSONObjectWithData: 
        jsonSource options:NSJSONReadingMutableContainers error:nil]; 

for (NSDictionary *dataDict in jsonObjects) { 
    NSString *title_data = [dataDict objectForKey:@"title"]; 

Теперь я хочу, чтобы разобрать значения из моего собственного JSON, который выглядит как это:

 { 
    "took" : 4, 
    "timed_out" : false, 
    "_shards" : { 
    "total" : 5, 
    "successful" : 5, 
    "failed" : 0 
    }, 
    "hits" : { 
    "total" : 14, 
    "max_score" : 1.0, 
    "hits" : [ { 
     "_index" : "carinspect", 
     "_type" : "inspect", 
     "_id" : "ZEDrkX9AQXKsZYdFr02ilw", 
     "_score" : 1.0, 
     "fields" : { 
     "UserID" : [ 2 ] 
     } 
    }, { 
     "_index" : "carinspect", 
     "_type" : "inspect", 
     "_id" : "778xOLe6Qy-jvnQUzmhADA", 
     "_score" : 1.0, 
     "fields" : { 
     "UserID" : [ 2 ] 
     } 
    }, 

Как я могу изменить

  1. массива, откуда данные т AKEN от id jsonObjects к чему-то вроде hits.hits jsonObjects
  2. Получить значение _id (что-то вроде NSString *title_data = [dataDict objectForKey:@"_id"];)
  3. Получить значение UserID (как NSString *title_data = [dataDict objectForKey:@"fields.UserID"];)

К сожалению, если язык, который я пытаюсь объяснить это ужасно

+0

Вы, как правило, не хотите следовать через NSDictionary (представляющий объект JSON), используя 'for (x in y)', но вместо этого хотите явно указать элементы, которые вы хотите извлечь - 'NSDictionary * hits = jsonObj ЕКТС [@ "хитов"]; '. –

+0

(Я сильно подозреваю, что вы получили приведенный выше код, слепо копируя код, который вы не понимали (но это был синтаксический анализ массива JSON). Перейдите на json.org и изучите синтаксис JSON - это займет всего 5-10 минут, чтобы учиться, и вы обречены, если не понимаете этого.) –

+0

@ AndreyPopov, в чем проблема? вы не знаете, как разбирать этот JSON? – meda

ответ

0
NSData *jsonSource = [NSData dataWithContentsOfURL: 
         [NSURL URLWithString:@"http://XXXXXXXX.com"]]; 

id jsonObjects = [NSJSONSerialization JSONObjectWithData: 
        jsonSource options:NSJSONReadingMutableContainers error:nil]; 

id jsonHits = [[jsonObjects objectForKey:@"hits"] objectForKey:@"hits"]; 

for (NSDictionary *dataDict in jsonHits) { 
    NSString *title_data = [[dataDict objectForKey:@"_source"] objectForKey:@"Number"]; 
Смежные вопросы