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

另一个不创建 DTO 的选项,使用 Gson 类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 回答