2012-01-26 21 views
0

iOS5でJSON応答の解析に関する質問があります。複数のオブジェクトを使用したJSON応答の解析

現在、私はthisガイドを参考に、サードパーティのマッピングサービスから返されたJSON応答を解析するのを手伝っています。

サードパーティのサーバーから返されたJSON応答が、ガイド自体に示されている応答と多少異なることを除いて、すべてが機能します。一言で言えば

は、全体のJSON応答の全体的な構造は次のようになります。

{ 
    "directions": [....], 
    "messages": [....], 
    "routes": 
     { 
      "features": [ 
       { 
        "attributes": {....}, 
        "geometry": 
         { 
          "paths": [....] 
         } 
       } 
      ] 
     } 
} 

Thisは実際のJSONクエリURLです。このコード行を使用することにより

NSDictionary * jsonResponse = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; 

私はsucessfullyそれが3のキー/値のペアを持っていますが、私の究極の目標は、 "に保存された配列を取得することであることを報告しjsonResponse辞書を取得することができていますroutes.features.geometry.paths '。

これは、配列値の最終セットを取得私の現在のコードブロックである:誰もが、私はもっとエレガントなファッションでこれをやって行くべきかの良いアイデアを持っている可能性がある場合、私は思っていた

NSDictionary * jsonResponse = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; 

NSArray * jsonArray = [jsonResponse valueForKeyPath:@"routes.features.geometry.paths"]; 

jsonArray = [jsonArray objectAtIndex:0]; 
jsonArray = [jsonArray objectAtIndex:0]; 

を?

ありがとうございます!

答えて

3

それはJSON(プレーン文字列)として働くことになりますので、あなただけのJSONオブジェクトとして使用することはできませんし、あなたが直接パスに行くためにあなたの問題のために、あなたはこのように行うことができますので、それを解析する必要が

NSArray *arr = [[[[jsonResponse objectForKey:@"routes"] objectForKey:@"features"] objectForKey:@"geometry"] objectForKey:@"paths"]; 

今、あなたは "ARR" 配列から

UPDATEあなたのパスデータにアクセスすることができます:要素がARRAある特徴として

NSArray *arr = [[[[[jsonResponse objectForKey:@"routes"] objectForKey:@"features"] objectAtIndex:0] objectForKey:@"geometry"] objectForKey:@"paths"]; 

を アプリを終了 ***キャッチされない例外により「NSInvalidArgumentException」、理由に:yのようにトラバース配列は、最初に、私はそれを行うとき、私はエラーを取得し、

+0

残念ながら、その要素を後藤「 - [__ NSCFArray objectForKey:]:認識されませんセレクタはインスタンス0xa0ce660に送信されます。 – Earthling

+0

[[[[jsonResponse objectForKey:@ "経路"] objectForKey:@ "機能"] objectAtIndex:0] objectForKey:@ "ジオメトリ"] objectForKey:@ "paths"];これはjsonをもう一度見て、あなたの "features"ノードに配列が入っていてDictionaryにたどり着くと思います。 –

+0

jsonにDictionaryまたはArrayがあるかどうかを確認する簡単な注意点があります。この文字に「[」が付いていれば、その要素以外の要素は配列として横断し、その要素よりも{{}はDictionary –

関連する問題