1

次の問題で少し困っています。

MongoDB からこの JSON 文字列を取得し、「写真」のすべての値を取得して ArrayList に入れたいと考えています。いくつかの例を見つけましたが、うまくいきません。私は GSON を使用していますが、JSON ソリューションでも問題ありません。

MongoDB から戻ります。

  [ { "url" : "/photos/avatar-1.jpg" , "photo" : "avatar-1.jpg" , "description" : "test     1"} , { "url" : "/photos/avatar-2.jpg" , "photo" : "avatar-2.jpg" , "description" : "test 2"} , { "url" : "/photos/avatar-3.jpg" , "photo" : "avatar-3.jpg" , "description" : "test 3"} , { "url" : "/photos/avatar-4.jpg" , "photo" : "avatar-4.jpg" , "description" : "test 4"}]

ArrayList に入れることは問題ではありませんが、「写真」の値を取得することです。誰かが 4 つの配列と「写真」値の System.out.println をループする方法の例を教えてくれたら、それは素晴らしいことです!!

ありがとう!

4

3 に答える 3

2

優れたjson-simpleライブラリを使用すると、次のようなことができるはずです。

String json = "[{\"photo\": \"1.png\"}, {\"photo\": \"2.png\"}, " +
                "{\"photo\": \"3.png\"}, {\"photo\": \"4.png\"}]";
JSONArray photos = (JSONArray)JSONValue.parse(json);
for (int index = 0; index < photos.size(); index++) {
    JSONObject photoObj = (JSONObject)photos.get(index);
    System.out.println(photoObj.get("photo"));
}

リテラルの JSON テキストを、データベースからフェッチしているデータに置き換えます。

于 2012-08-17T13:37:03.653 に答える
2
jsonString =[...];
Gson gson = new Gson();
PhotoDTO[] photos = gson.fromJson(jsonString, PhotoDTO[].class);

for(PhotoDTO photo : photos){
   System.out.println("photo -> " + photo.getPhoto());
}

PhotoDTO クラス定義

class PhotoDTO
{
  String url;
  String photo;
  String description;
  // setters & getters methods
}
于 2012-08-17T13:37:24.853 に答える
0

Gson クラスを使用して、DTO を作成しない別のオプションStringMap:

String json = "[ { \"url\" : \"/photos/avatar-1.jpg\" , \"photo\" : \"avatar-1.jpg\" , \"description\" : \"test     1\"} , { \"url\" : \"/photos/avatar-2.jpg\" , \"photo\" : \"avatar-2.jpg\" , \"description\" : \"test 2\"} , { \"url\" : \"/photos/avatar-3.jpg\" , \"photo\" : \"avatar-3.jpg\" , \"description\" : \"test 3\"} , { \"url\" : \"/photos/avatar-4.jpg\" , \"photo\" : \"avatar-4.jpg\" , \"description\" : \"test 4\"}]";   

Gson gson = new Gson();     
Type type = new TypeToken<List<StringMap<String>>>(){}.getType();
List<StringMap<String>> stringMaps = gson.fromJson(json, type);
for (StringMap<String> map:stringMaps) {
    System.out.println(map.get("photo"));
}

編集

輸入品:

import com.google.gson.Gson;
import com.google.gson.internal.StringMap;
import com.google.gson.reflect.TypeToken;
于 2012-08-17T13:55:50.497 に答える