2011-12-18 2 views
0

Я хочу, чтобы эти данные отображались в виде таблицы. может ли кто-нибудь сказать мне, как принимать данные в словаре или массиве и отображать в таблице? данные отображаются в соответствии сКак получить данные из этого json

Я хочу, чтобы отобразить city и custno

{ 
"Status": 200, 
"data": [ 
    { 
     "dispatch": "11111", 
     "locname": "Sample Company Location 1", 
     "add1": "226 Engleman Street", 
     "city": "Bardstown", 
     "state": "KY", 
     "zip": "40004", 
     "contacts": [ 
      { 
       "id": "1", 
       "custno": "0000235", 
       "locno": "00001", 
       "salutation": "Mr.", 
       "jobtitle": "IT Manager", 
       "locktime": "", 
       "lockby": "" 
      }, 
      { 
       "id": "11", 
       "custno": "0000235", 
       "locno": "00001", 
       "contact": "Greg C", 

       "extension": "205", 
       "salutation": "Mr. ", 
       "jobtitle": "President", 
       "locktime": null, 
       "lockby": null 
      }, 
      { 
       "id": "12", 
       "custno": "0000235", 
       "locno": "00001", 

       "extension": "206", 
       "salutation": "Mr.", 
       "jobtitle": "Parts Manager", 
       "locktime": null, 
       "lockby": null 
      }, 
      { 
       "id": "13", 
       "custno": "0000235", 
       "locno": "00001", 

       "extension": "202", 
       "salutation": "Mr.", 
       "jobtitle": "Service Manager", 
       "locktime": "", 
       "lockby": "" 
      } 
     ], 
     "locationnotes": "5/20/2010 9:32:06 PM - Updated Information1111111", 
     "custno": "0000235", 
     "locno": "00001", 
     "calledinby": "Teresa", 
     "serviceagrno": "", 
     "dispatchnotes": "This is a test dispatch", 
     "pastcustomernotes": "", 
     "pasttechnotes": [], 
     "status": "Pending", 
     "locationimage": "/images/content/2t_1318687848_100x100.gif", 
     "pmstatus": "Yes" 
    }, 
    { 
     "dispatch": "4", 
     "locname": "Sample Company Location 1", 
     "add1": "226 Engleman Street", 
     "city": "Bardstown", 
     "state": "KY", 
     "zip": "40004", 
     "contacts": [ 
      { 
       "id": "1", 
       "custno": "0000235", 
       "locno": "00001", 

       "extension": "200", 
       "salutation": "Mr.", 
       "jobtitle": "IT Manager", 
       "locktime": "", 
       "lockby": "" 
      }, 
      { 
       "id": "11", 
       "custno": "0000235", 
       "locno": "00001", 
       "phonefax": "555-555-1002", 
       "extension": "205", 
       "salutation": "Mr. ", 
       "jobtitle": "President", 
       "locktime": null, 
       "lockby": null 
      }, 
      { 
       "id": "12", 
       "custno": "0000235", 
       "locno": "00001", 
       "extension": "206", 
       "salutation": "Mr.", 
       "jobtitle": "Parts Manager", 
       "locktime": null, 
       "lockby": null 
      }, 
      { 
       "id": "13", 
       "custno": "0000235", 
       "locno": "00001", 

       "extension": "202", 
       "salutation": "Mr.", 
       "jobtitle": "Service Manager", 
       "locktime": "", 
       "lockby": "" 
      } 
     ], 
     "locationnotes": "5/20/2010 9:32:06 PM - Updated Information1111111", 
     "custno": "0000235", 
     "locno": "00001", 
     "calledinby": "Teresa", 
     "serviceagrno": null, 
     "dispatchnotes": "11/3/2011 7:59 - This is a sample ATM call.", 
     "pastcustomernotes": "", 
     "pasttechnotes": [], 
     "status": "Pending", 
     "locationimage": "/images/content/2t_1318687848_100x100.gif", 
     "pmstatus": "No" 
    }, 
    { 
     "dispatch": "5", 
     "locname": "Sample Company Location 1", 
     "add1": "226 Engleman Street", 
     "city": "Bardstown", 
     "state": "KY", 
     "zip": "40004", 
     "contacts": [ 
      { 
       "id": "1", 
       "custno": "0000235", 
       "locno": "00001", 
       "contact": "Michael B", 
       "email": "[email protected]", 
       "phoneoffice": "502-555-1000", 
       "phonemobile": "502-555-0769", 
       "phonefax": "555-555-1002", 
       "extension": "200", 
       "salutation": "Mr.", 
       "jobtitle": "IT Manager", 
       "locktime": "", 
       "lockby": "" 
      }, 
      { 
       "id": "11", 
       "custno": "0000235", 
       "locno": "00001", 

       "extension": "205", 
       "salutation": "Mr. ", 
       "jobtitle": "President", 
       "locktime": null, 
       "lockby": null 
      }, 
      { 
       "id": "12", 
       "custno": "0000235", 
       "locno": "00001", 
       "extension": "206", 
       "salutation": "Mr.", 
       "jobtitle": "Parts Manager", 
       "locktime": null, 
       "lockby": null 
      }, 
      { 
       "id": "13", 
       "custno": "0000235", 
       "locno": "00001", 
       "extension": "202", 
       "salutation": "Mr.", 
       "jobtitle": "Service Manager", 
       "locktime": "", 
       "lockby": "" 
      } 
     ], 
     "locationnotes": "5/20/2010 9:32:06 PM - Updated Information1111111", 
     "custno": "0000235", 
     "locno": "00001", 
     "calledinby": "", 
     "serviceagrno": null, 
     "dispatchnotes": "", 
     "pastcustomernotes": "", 
     "pasttechnotes": [], 
     "status": "Pending", 
     "locationimage": "/images/content/2t_1318687848_100x100.gif", 
     "pmstatus": "Yes" 
    } 
] 

}

ответ

1

Вы должны прочитать, что в NSDictionary либо NSJSONSerialization (доступен только в прошивкой 5 и более поздней версии) или другой JSON-каркас (я рекомендую TouchJSON - https://github.com/TouchCode/TouchJSON).

Вот примеры:

NSJSONSerialization:

NSString *jsonString = <JSON_STRING>; 
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *error = nil; 
NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:jsonData 
                  options:0 
                  error:&error]; 

TouchJSON:

NSString *jsonString = <JSON_STRING>; 
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *error = nil; 
NSDictionary *dictionary = [[CJSONDeserializer deserializer] 
          deserializeAsDictionary:jsonData 
               error:&error]; 

После того, как у вас есть словарь, который вы можете получить информацию, которую вы хотите. В вашем случае похоже, что вы хотите захватить data, который представляет собой массив объектов. Я предполагаю, что вы хотите показать что-то об этих объектах в таблице. Так вот начало этого кода, чтобы вы собираетесь, и тогда вы должны быть в состоянии выяснить, остальное:

NSArray *data = [dictionary objectForKey:@"data"]; 

// Then for each data object, you can get at say its `locname' attribute to show in a cell like so 
NSString *locname = [[data objectAtIndex:i] objectForKey:@"locname"]; 
+0

спасибо ........ ,,,,, –

+0

При использовании NSJSONSerialization, один должен вероятно, используйте «options: kNilOptions» вместо «options: 0». Оба работают, но первое кажется мне более читабельным (и это рекомендует Apple). –

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