【问题标题】:JSON to Java ObjectJSON 到 Java 对象
【发布时间】:2012-08-17 13:28:19
【问题描述】:

我有点被以下问题困扰。

从 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 个数组和 'photo' 值的 System.out.println 的示例,那就太好了!

谢谢!

【问题讨论】:

    标签: java json object gson


    【解决方案1】:
    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
    }
    

    【讨论】:

    • 谢谢!这行得通。 PhotoDTO[] 中的 [] 是我所缺少的。
    【解决方案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 文本。

    【讨论】:

      【解决方案3】:

      另一个不创建 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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-14
        • 1970-01-01
        • 2015-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多