2012-12-04 2 views
0

Я немного запутался в отношении типа данных NSDictionary, поскольку он относится к структуре JSON и нуждается в помощи. Вот мой выход JSON:xcode и извлечения данных из NSDictionary (objectForKey & valueForKey)

{ 
    "requestDetails": 
    { 
     "timeStamp":"2001-12-17T09:30:47-08:00", 
     "transactionType":"QUERY", 
     "action":"GET INVOICES", 
    }, 
    "Payload": 
    { 
     "event": 
     { 
      "sourceRecordType":"INVOICE INQUIRY", 
      "serviceRecordType":"INVOICE", 
      "ownershipType":"EXPLICIT", 
     }, 
    }, 
    "executionDetails": 
    { 
     "timeStamp":"2012-12-04T13:48:21-08:00", 
     "statusType": "SUCCESSFUL_TRANSACTION", 
     "statusCode":"0", 
     "DBRecordCount":"0", 
     "processedRecordCount":"0", 
     "warning": 
     [ 
      { 
       "errorCode":"257", 
       "errorDescription":"Criteria specified is incorrect. Please Verify that the criteria is correct.", 
       "__hashCodeCalc":false 
      }, 
      { "errorCode":"60", 
       "errorDescription":"No results were found. Please enter new search criteria.", 
       "__hashCodeCalc":false 
      } 
     ], 
    }, 
} 

Теперь мое понимание вся эта вещь словарь и objectForKey: @ «executionDetails» даст следующий вывод:

{ 
     "timeStamp":"2012-12-04T13:48:21-08:00", 
     "statusType": "SUCCESSFUL_TRANSACTION", 
     "statusCode":"0", 
     "DBRecordCount":"0", 
     "processedRecordCount":"0", 
     "warning": 
     [ 
      { 
       "errorCode":"257", 
       "errorDescription":"Criteria specified is incorrect. Please Verify that the criteria is correct.", 
       "__hashCodeCalc":false 
      }, 
      { "errorCode":"60", 
       "errorDescription":"No results were found. Please enter new search criteria.", 
       "__hashCodeCalc":false 
      } 
     ], 
    } 

Как выбрать значения в пределах [] кронштейны. Я попробовал valueForKey и ObjectForKey. Я не ясно обработки структур и оценить помощь

warning": 
     [ 
      { 
       "errorCode":"257", 
       "errorDescription":"Criteria specified is incorrect. Please Verify that the criteria is correct.", 
       "__hashCodeCalc":false 
      }, 
      { "errorCode":"60", 
       "errorDescription":"No results were found. Please enter new search criteria.", 
       "__hashCodeCalc":false 
      } 
     ], 

Благодарности

ответ

1

Это просто массив. Таким образом вы можете получить доступ к его содержимому.

NSDictionary *executionDetails = [json objectForKey:@"executionDetails"]; 
NSArray *warnings = [executionDetails objectForKey:@"warning"]; 

for (NSDictionary *warning in warnings) { 
    NSLog(@"%@", warning); 
} 
// To access an individual warning use: [warnings objectAtIndex:0] 

Вы можете также использовать современный синтаксис Objective-C, чтобы сделать его более ясным:

NSDictionary *executionDetails = json[@"executionDetails"]; 
NSArray *warnings = executionDetails[@"warning"]; 
NSLog(warnings[0]); 
+0

Спасибо. Он работал нормально. Но есть ли место, где я могу пойти и искать помощь, чтобы понять объектForKey и как отображать выходные данные JSON. – user1509593

+0

В этом случае вы не работаете с JSON. JSON уже был десериализован, и вы работаете либо с [NSArray] (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSArray_Class/NSArray.html), либо [NSDictionary] (https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSDictionary_Class/Reference/Reference.html). В противном случае я предлагаю обратиться к документации по той библиотеке JSON, с которой вы работаете, например. [SBJson] (http://stig.github.com/json-framework/) – stephenmuss

+0

Спасибо. Понял. Я буду ссылаться на библиотеку JSON. – user1509593

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