2016-05-24 22 views
0

iOSのコーディング時に新しく、いくつかのaJaxコードを修正して、JSON配列の結果セットを以下のコードで正しく解析できるようにしました。JSON配列を解析するCocoa iOS

JSON文字列戻り

{ 
    "employees": [ 
     { 
      "firstName": "John", 
      "lastName": "Doe" 
     }, 
     { 
      "firstName": "Anna", 
      "lastName": "Smith" 
     }, 
     { 
      "firstName": "Peter", 
      "lastName": "Jones" 
     } 
    ] 
} 

オリジナルチュートリアル

https://spring.io/guides/gs/consuming-rest-ios/

iOSのコード事前に

 if (data.length > 0 && connectionError == nil) 
    { 
     NSDictionary *greeting = [NSJSONSerialization  JSONObjectWithData:data 
                    options:0 
                    error:NULL]; 
     //self.greetingId.text = [[greeting objectForKey:@"id"] stringValue]; 
     //self.greetingContent.text = [greeting objectForKey:@"content"]; 

     self.greetingId.text = [[greeting objectForKey:@"employees"] stringValue]; 
     self.greetingContent.text = [greeting objectForKey:@"firstName"]; 
    } 
}]; 

ありがとう!

+0

それは実際の問題が何であるかを質問から明らかではないが、ここではこのスニペットにスポットいくつかの問題です:1) 'objectForKey:@「従業員が」'私は 'のstringValueを推測' NSArray'を返します。 'あなたが探しているものではありません2)' 'greeting'辞書の' 'objectForKey:@" firstName "'(これはあなたのルートオブジェクトです)は 'nil'を返します。私はこれが意味をなさないと正しい方向にあなたを操縦することを願っています:) – Alladinian

答えて

0

あなたの「従業員」は、複数のファーストネームとラストネームの辞書を持つ配列なので、コード内で何をしようとしているのが間違っています。

employeeのobjectkeyを使用して配列を作成する必要があります。複数の辞書を提供し、それらの辞書にアクセスするには、forループを使用してキーを文字列に割り当てることができます。

NSArray *employeesArray = [greeting objectForKey:@"employees"]; 

for (NSDictionray *dict in employeesArray) { 
    NSString *firstname = [[dict objectForKey:@"firstName"] stringValue]; 
    NSString *lastName = [[dict objectForKey:@"lastName"] stringValue]; 
    // do something with names 
} 
+0

私は説明を追加しました –

+0

次のペーストビンのようにテキストで何かをする方法もわからない...名前を印刷したい... - > http ://pastebin.com/yv92v0RT – Dango

+0

はい、あなたはそのコードの名前で何もしていません。質問に投稿したそのjsonの例で複数の名字があり、あなたの質問は完全ではありません。あなたは何をしようとしているのですか?エラーはどんなエラーになっていますか? –