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

2022-09-01 00:43:29

我有一个列表,我需要使用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
      }
   ]
}

最好的方法是什么?


答案 1

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

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


答案 2

如果在您的方法是 一个 ,那么这就是您应该序列化的内容。responsemarshalDataResponse

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

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