2014-10-17 22 views
0

Я совершенно новый в программировании Objective-c.Objective-c синтаксический анализ JSON

Я пытаюсь получить запрос от своего приложения. Я использую Unirest для Objective-C в качестве HTTP-библиотек.

Мой API будет возвращать JSON, как показано ниже: -

{ 
    "merchant_list": [ 
    { 
     "_id": "543ce2887ca4e102af44a5a8", 
     "address": "MyAddress bla bla bla", 
     "admin": [ 
     "543ce2887ca4e102af44a5a7" 
     ], 
     "card": null, 
     "circle": null, 
     "dollar_ratio": null, 
     "fb": null, 
     "logo": null, 
     "min_spending_VIP": null, 
     "modification_timestamp_utc": 1413276296.0, 
     "name": "Lorem ipsum", 
     "outlets": [], 
     "promotions": [], 
     "referral_ratio": null 
    } 
    ], 
    "status": "ok" 
} 

Unirest библиотека может разобрать этот JSON в NSDictionary или NSArray, как вы видите body.JSONObject [@ "Статус"] дает мне "OK" значение.

Но проблема в том, что я не могу получить доступ ко всем атрибутам в списке продавцов.

UNIJsonNode *body = response.body; 
if ([body.JSONObject[@"status"] isEqualToString:@"ok"]) 
{ 
    NSLog(@"%@", body.JSONObject[@"merchant_list"]); 
} 

NSLog значение merchant_list, как показано ниже: -

2014-10-17 18:07:10.623 MyApp[18567:287513] (
     { 
     "_id" = 543ce2887ca4e102af44a5a8; 
     address = "MyAddress bla bla bla"; 
     admin =   (
      543ce2887ca4e102af44a5a7 
     ); 
     card = "<null>"; 
     circle = "<null>"; 
     "dollar_ratio" = "<null>"; 
     fb = "<null>"; 
     logo = "<null>"; 
     "min_spending_VIP" = "<null>"; 
     "modification_timestamp_utc" = 1413276296; 
     name = "Lorem ipsum"; 
     outlets =   (
     ); 
     promotions =   (
     ); 
     "referral_ratio" = "<null>"; 
    } 
) 

Любая помощь? Я уже потратил часы на эту ошибку.

+1

Используйте этот LIB: https://github.com/AFNetworking/AFNetworking –

+0

Какие свойства вы не можете получить доступ? Ваш журнал выглядит так, как будто он соответствует входному JSON. – Keab42

+1

@SandroMachado заглянет в него – skycrew

ответ

0

У меня сегодня плохая лихорадка, но я все еще работаю. в результате я не могу даже решить эту простую ошибку.

Благодаря Rajpal Thakur за то, что вы выделили проблему.

теперь я могу получить доступ к атрибутам: -

if ([body.JSONObject[@"status"] isEqualToString:@"ok"]) 
    { 
     for (id merchant in body.JSONObject[@"merchant_list"]) 
     { 
      for (id key in merchant){ 
       NSLog(@"key: %@, value: %@ \n", key, [merchant objectForKey:key]); 
      } 
     } 
    } 
Смежные вопросы