2011-12-18 11 views
0

このデータをtableviewに表示します。誰でも辞書や配列のデータを取り込んでテーブルに表示する方法を教えていただけますか?私はあなたが(iOSの5でのみ使用可能とそれ以降)NSJSONSerializationいずれかでNSDictionaryにそれを読む必要がcitycustnoこのjsonからデータを取得する方法

{ 
"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

を表示したい

下などのデータが示されていますか別の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を使用する場合は、1がなければなりませんおそらく、 "options:0"の代わりに "options:kNilOptions"を使用します。どちらも動作しますが、前者は私の目にはもう少し読みやすいようです(アップルはこれを推奨しています)。 –

関連する問題