如何使用 GSON 将列表转换为 JSON 对象?

新手上路,请多包涵

我有一个列表,我需要使用 GSON 将其转换为 JSON 对象。我的 JSON 对象中有 JSON 数组。

 public class DataResponse {

    private List<ClientResponse> apps;

    // getters and setters

    public static class ClientResponse {
        private double mean;
        private double deviation;
        private int code;
        private String pack;
        private int version;

        // getters and setters
    }
}

下面是我的代码,我需要在其中将我的列表转换为其中包含 JSON 数组的 JSON 对象 -

 public void marshal(Object response) {

    List<DataResponse.ClientResponse> clientResponse = ((DataResponse) response).getClientResponse();

    // now how do I convert clientResponse list to JSON Object which has JSON Array in it using GSON?

    // String jsonObject = ??
}

截至目前,列表中只有两项 - 所以我需要这样的 JSON 对象 -

 {
   "apps":[
      {
         "mean":1.2,
         "deviation":1.3
         "code":100,
         "pack":"hello",
         "version":1
      },
      {
         "mean":1.5,
         "deviation":1.1
         "code":200,
         "pack":"world",
         "version":2
      }
   ]
}

做这个的最好方式是什么?

原文由 AKIWEB 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 783
2 个回答

如果 response 在您的 marshal 方法中是 DataResponse ,那么这就是您应该序列化的内容。

 Gson gson = new Gson();
gson.toJson(response);

这将为您提供所需的 JSON 输出。

原文由 Sotirios Delimanolis 发布,翻译遵循 CC BY-SA 3.0 许可协议

google gson 文档 中有一个关于如何将列表实际转换为 json 字符串的示例:

 Type listType = new TypeToken<List<String>>() {}.getType();
 List<String> target = new LinkedList<String>();
 target.add("blah");

 Gson gson = new Gson();
 String json = gson.toJson(target, listType);
 List<String> target2 = gson.fromJson(json, listType);

您需要在 toJson 方法中设置列表类型,并传递列表对象以将其转换为 json 字符串,反之亦然。

原文由 Rod_Algonquin 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题