Java 如何使用Gson删除Json对象的嵌套字段
我的Java 如何使用Gson删除Json对象的嵌套字段,java,json,gson,Java,Json,Gson,我的JSON响应: { "date": 1555044585641, "changed": true, "data": { "items": [ { "id": 503, "activated": false, "view": { "listItem": {
JSON
响应:
{
"date": 1555044585641,
"changed": true,
"data": {
"items": [
{
"id": 503,
"activated": false,
"view": {
"listItem": {
...
},
"details": {
...
}
}
}
]
}
}
我正在使用下面的类来解析JSON
,使用Gson
:
public class Response {
@SerializedName("date")
public long date;
@SerializedName("changed")
public boolean changed;
@SerializedName("data")
public JsonObject data;
}
我使用data.toString()
将“数据”部分保存为字符串,因为数据是JsonObject
。我的问题是:
如何在保存前排除“详细信息”部分?
保存的字符串应如下所示:
{
"items": [
{
"id": 503,
"activated": false,
"view": {
"listItem": {
...
}
}
}
]
}
您需要使用
JsonElement
,JsonArray
,JsonObject
遍历JSON
结构:
class Response {
@SerializedName("date")
public long date;
@SerializedName("changed")
public boolean changed;
@SerializedName("data")
public JsonObject data;
public void removeDetails() {
JsonElement items = data.get("items");
if (!items.isJsonArray()) {
return;
}
JsonArray array = items.getAsJsonArray();
array.forEach(item -> {
if (item.isJsonObject()) {
JsonObject node = item.getAsJsonObject();
JsonElement view = node.get("view");
if (view.isJsonObject()) {
view.getAsJsonObject().remove("details");
}
}
});
}
}
反序列化后,调用removeDetails()
,您只能保存所需的数据