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 = ??
}
今のところ、リストには2つのアイテムしかありません-したがって、このような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
}
]
}
これを行う最良の方法は何ですか?
response
メソッドのmarshal
がDataResponse
である場合、それがシリアル化すべきものです。
Gson gson = new Gson();
gson.toJson(response);
これにより、探しているJSON出力が得られます。
リストをjson文字列に実際に変換する方法については、google gson documentation のサンプルがあります。
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文字列に変換するか、その逆に変換する必要があります。
あなたも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
}
]
}
の代わりに
{"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}]}
pretty Printingを使用できます。使用するには
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson(dataResponse);