1

私は成功せずに解析しようとしている次のjsonを持っています:

[{
"id":10,
"description":"Prueba",
"name":"Prueba",
"price":"3.5",
"updated_at":"2013-06-10T13:41:25Z",
"images":
        [{
            "image":{
                "id":6,
                "type":"Image",
                "description":"Prueba",
                "name":"Prueba",
                "data_updated_at":"2013-06-10T13:41:24Z",
                "updated_at":"2013-06-10T13:41:25Z",
                "position":1,
                "data_file_size":9599,
                "data_file_name":"tortitas.jpg",
                "image_original":"tortitas.jpg",
                "image_medium":"tortitas_medium.jpg",
                "image_thumb":"tortitas_thumb.jpg"
            }
        }]
},
{
"id":11,
"description":"Tortitas ricas ricas",
"name":"Tortitas",
"price":"3.56",
"updated_at":"2013-06-10T14:37:58Z",
"images":
        [{
            "image":{
            "id":7,
            "type":"Image",
            "description":"Tortitas",
            "name":"Tortitas",
            "data_updated_at":"2013-06-10T14:37:57Z",
            "updated_at":"2013-06-10T14:37:58Z",
            "position":1,
            "data_file_size":9599,
            "data_file_name":"tortitas.jpg",
            "image_original":"tortitas.jpg",
            "image_medium":"tortitas_medium.jpg",
            "image_thumb":"tortitas_thumb.jpg"
            }
        }]
    }
}]

名前、ID、価格、およびすべての画像データを取得する必要があり、出口なしで検索してグーグルで検索しました。通常、ここで質問に対するすべての回答が見つかりましたが、今回は見つからなかったので、ここで終了しました。これは、現在データを解析するために使用しているコードです。名前、ID、価格を取得できますが、画像はうまくいきませんでした。

JSONArray aJson = new JSONArray(sJson);

List<Productos> prods = new ArrayList<Productos>();

for(int i=0; i<aJson.length(); i++) {
       JSONObject json = aJson.getJSONObject(i);
       Productos prod = new Productos();
       prod.setProduct(json.getString("name"));
       prod.setPrice(json.getString("price"));
       JSONArray imgsJson = json.optJSONArray("images");
       JSONObject images = new JSONObject(imgsJson.toString());
       JSONArray image = images.getJSONArray("image");
       for(int j = 0 ; j < image.length(); j++){
        JSONObject img = image.getJSONObject(i);
        prod.setImage(img.getString("image_medium"));
       }
       prod.setId(Integer.valueOf(json.getString("id")));
       prods.add(prod);
}

前もって感謝します。

4

2 に答える 2

1

これには Jackson または Gson を使用します。POJO を指定して返すことができます。これにより、JSonArray を定義するよりもはるかに簡単になります。さらに、Web リクエストを行うと仮定すると、RoboSpice と Spring for Android を使用して、より堅牢なエクスペリエンスを実現することをお勧めします。

リンク:

http://wiki.fasterxml.com/JacksonDownload

https://code.google.com/p/google-gson/

https://github.com/octo-online/robospice

于 2013-08-02T23:03:07.683 に答える
0
  • Gsonライブラリを使用すると、本当に簡単です

    List<ProductosClass> yourClassList = new Gson().fromJson(jsonArray, ProductosType);
    

http://google-gson.googlecode.com/svn/tags/1.2.3/docs/javadocs/com/google/gson/Gson.html を確認してください:

  • ジャクソンも使える
于 2013-08-02T23:03:16.730 に答える