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);
添加回答
举报