3 回答

TA貢獻1825條經驗 獲得超4個贊
我會為您的數據創建一些 POJO 類:
class MyData {
private List<Data> wrapper;
//getters setters constructors
}
class Data {
private String content;
private List<Integer> positions;
//getters setters constructors
}
然后反序列化它:
Gson gson = new Gson();
String json = //json here
MyData myData = gson.fromJson(myJson, MyData.class);
對于序列化:
MyData myData = ...
String json = gson.toJson(myData);
另一種方法可以是使用JsonParser并訪問其元素來解析該結構:
JsonParser jsonParser = new JsonParser();
JsonElement jsonElement = jsonParser.parse(json);
JsonElement wrapperElement = jsonElement.getAsJsonObject().get("wrapper"); //access wrapper
JsonArray array = wrapperElement.getAsJsonArray(); // access array

TA貢獻1802條經驗 獲得超5個贊
沒有POJO,這似乎可以使用Gson解決嵌套JSON解決方案
package com.test;
import com.google.gson.JsonObject;
public class Main {
public static void main(String[] args) {
JsonObject ex3 = new JsonObject();
ex3.addProperty("example3", 30);
JsonObject ex2 = new JsonObject();
ex2.add("example2", ex3.getAsJsonObject());
JsonObject ex1 = new JsonObject();
ex1.add("example1", ex2.getAsJsonObject());
System.out.println(ex1.toString());
}
}
輸出是:
{"example1":{"example2":{"example3":30}}}

TA貢獻1831條經驗 獲得超4個贊
最好使用Pojo進行格式化。
class Wrapper{
private List<Data> data;
// geters, seters
}
class Data{
private String content;
private List<Integer> positions;
// geters, seters
}
對于反序列化/序列化,您可以使用Jackson
ObjectMapper mapper = new ObjectMapper();
Wrapper wriper = mapper.readValue(dataString, Wrapper.class);
String jsonString = mapper.writeValueAsString(wriper);
或Gson
Gson gson = new Gson();
Wrapper wriper = gson.fromJson(dataString, Wrapper.class);
String json = gson.toJson(wriper);
添加回答
舉報