How to convert List to a JSON Object using GSON?

匿名 (未验证) 提交于 2019-12-03 08:36:05

问题:

I have a List which I need to convert into JSON Object using GSON. My JSON Object has JSON Array in it.

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     } } 

Below is my code in which I need to convert my List to JSON Object which has JSON Array in it -

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 = ?? } 

As of now, I only have two items in List - So I need my JSON Object like this -

{      "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       }    ] } 

What is the best way to do this?

回答1:

If response in your marshal method is a DataResponse, then that's what you should be serializing.

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

That will give you the JSON output you are looking for.



回答2:

There is a sample from google gson documentation on how to actually convert the list to json string:

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); 

You need to set the type of list in toJson method and pass the list object to convert it to json string or vice versa.



回答3:

Assuming you also want to get json in format

{   "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     }   ] } 

instead of

{"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}]} 

you can use pretty printing. To do so use

Gson gson = new GsonBuilder().setPrettyPrinting().create(); String json = gson.toJson(dataResponse); 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!