2014-01-23 6 views
0
{"code":200,"msg":"","type":"DEFAULT", 
"data{"thumbsId":209834,"thumbsKind":"UP","fbObjectId":null,"canPostFB":true,"thumbsupCnt":292,"episodeId":2491}, 
"errorDetails":null} 

Я хочу получить thumbskind значение данных. Мои коды следующим образом:Как разобрать данные JSon в приложении iOS

@property(nonatomic, assign) NSInteger code; 
@property(nonatomic, copy) NSString *msg; 
@property(nonatomic, copy) NSString *type; 
@property(nonatomic, copy) NSString *details; 
@property(nonatomic, copy) NSDictionary *data; 


NSDictionary *obj = (NSDictionary *)sender; 

self.code = [[obj objectForKey:@"code"] intValue]; 
self.msg = [obj valueForKeyPath:@"msg"]; 
self.type = [obj valueForKeyPath:@"type"]; 
self.data = [obj valueForKeyPath:@"data"]; 
self.details = [obj valueForKeyPath:@"errorDetails"]; 

я могу получить code, type, msg и так далее.

Но я не могу получить значения data. Как я могу получить его значения, такие как thumbsId, thumbsKind и thumbsupCnt?

+1

Они находятся в 'data' словаре , – rmaddy

+0

Ваши данные json неверны для одного: Должны быть: {"code": 200, "msg": "", "type": "DEFAULT", "data": {"thumbsId": 209834, "thumbsKind" : «UP», «fbObjectId»: null, «canPostFB»: true, «thumbsupCnt»: 292, «episodeId»: 2491}, «errorDetails»: null} – Xuan

+0

NSLog ваша переменная 'obj', и это немного изменит больше смысла. 'thumsId' находится внутри словаря данных. (Но я надеюсь, что вы просто неправильно скопировали этот JSON, так как он недопустим.) –

ответ

0

данные словаря в словарь, чтобы попробовать это

@property(nonatomic, copy) NSString * thumbsId; 
@property(nonatomic, copy) NSString * thumbsKind; 
. 
. 
. 

NSDictionary *obj = (NSDictionary *)sender; 
NSDictionary *dataDict = (NSDictionary *) [obj objectForKey:@"data"] 


self. thumbsKind = [dataDict valueForKeyPath:@"thumbsKind"]; 
self.thumbsId = [dataDict valueForKeyPath:@"thumbsId"]; 
. 
. 
0
NSInteger thumbsId = [[self.data objectForKey:@"thumbsId"] intValue]; 

NSString *thumbsKind = [self.data objectForKey:@"thumbsKind"]; 

...... 
0

Ваши данные в неправильном формате Json

Это должно быть так:

"data:{"thumbsId":209834,"thumbsKind":"UP","fbObjectId":null,"canPostFB":true,"thumbsupCnt":292,"episodeId":2491}, 

Вместо

"data{"thumbsId":209834,"thumbsKind":"UP","fbObjectId":null,"canPostFB":true,"thumbsupCnt":292,"episodeId":2491}, 

, а затем попробовать

NSDictionary *dataDict = (NSDictionary *) [obj objectForKey:@"data"] 
self. thumbsKind = [dataDict valueForKeyPath:@"thumbsKind"]; 
self.thumbsId = [dataDict valueForKeyPath:@"thumbsId"]; 
+0

Спасибо для моего ответа. Я изменил свои коды, как вы. Но я не могу получить thumbsKind и thumbsId. У них есть нулевое значение. Несмотря на то, что я проверил json-формат, он не получает значений в поле данных. – Soo

+0

изменили ли вы формат Json, как я сказал вы? Попробуйте «valueForKey» вместо «valueForKeyPath» в приведенном выше коде. – Ankush

0

Вы можете сделать это

NSInteger thumbsId = [[obj valueForKeyPath:@"data.thumbsId"] intValue]; 

Вы можете уменьшить боль кодирования и сохранить свое время с помощью
JSON Accelerator

Смежные вопросы