2012-03-02 5 views
0

Usrsとその項目の詳細をjsonで送信しようとしています。しかし、jsonの世代では、jsonオブジェクトのjsonarryを反復して、私はJsonrrayとJsonObjectを管理するためにmiddle.howをスタックしました。JsonobjectとJsonarrayの管理反復で

{ 
"Data": 
    { 
     ["user":1], 
     "items": 
       [{"item":1},{"item":2},{"item":3},{"item":4}] 
    }, 
    { 
     ["user":2], 
     "items": 
       [{"item":11},{"item":2},{"item":3},{"item":4}] 
    }, 
    { 
     ["user":3], 
     "items": 
       [{"item":11},{"item":2},{"item":3},{"item":4}] 
    }, 
} 
  1. 私は与えられた構造の上に完全であるかどうか、わかりませんか?
  2. もし完全なら、どのようにして特定のユーザーの4番目のアイテムを取得できますか?
+0

であるあなたは、あなたのJSONを作成し、解析するJSONライブラリのいずれかを使用していますか?そうでない場合は、そうすることをお勧めします。私はGoogle GSONを使用しています。あなたが使用できる[http://www.jsonlint.com](http://www.jsonlint.com)にオンラインバリデーターがあります。私はStringTreeを使ってJSONを過去にチェックしています:[http://stringtree.org/stringtree-json.html](http://stringtree.org/stringtree-json.html) –

答えて

0

私はIDEを開いてコーヒーを待っていました。だから、あなたのためのコード。

String s = "{\"Data\":[{\"user\":1,\"items\":[{\"item\":1},{\"item\":2},{\"item\":3},{\"item\":4}]},{\"user\":2,\"items\":[{\"item\":11},{\"item\":2},{\"item\":3},{\"item\":4}]},{\"user\":3,\"items\":[{\"item\":11},{\"item\":2},{\"item\":3},{\"item\":4}]}]}"; 
    JSONObject json = new JSONObject(s); 
    JSONArray data = json.getJSONArray("Data"); 
    for(int i=0; i< data.length(); i++){ 
     JSONObject userData = data.getJSONObject(i); 
     if(userData.getInt("user") ==2){ 
       JSONArray items = userData.getJSONArray("items"); 
       JSONObject item = items.getJSONObject(3); 
       System.out.println("item#4: " + item.getInt("item")); 
     } 
    } 

あなたのための正しいJSONは

{ 
     "Data":[ 
      { 
       "user":1, 
       "items": 
         [{"item":1},{"item":2},{"item":3},{"item":4}] 
      }, 
      { 
       "user":2, 
       "items": 
         [{"item":11},{"item":2},{"item":3},{"item":4}] 
      }, 
      { 
       "user":3, 
       "items": 
         [{"item":11},{"item":2},{"item":3},{"item":4}] 
      } 
      ] 
}