【发布时间】:2021-09-20 13:59:41
【问题描述】:
我正在编写一种从 json (LinkedTreeMap) 中手动删除空值的方法。
private static Gson gson = new Gson();
public static LinkedTreeMap removeNullJsonObjects(Object object) {
JsonElement jsonElement = gson.toJsonTree(object);
LinkedTreeMap<Object, Object> linkedTreeMap = gson.fromJson(jsonElement, LinkedTreeMap.class);
for (var entry : linkedTreeMap.entrySet()) {
Object value = entry.getValue();
if (value == null) {
linkedTreeMap.remove(entry.getKey());
} else if (value instanceof LinkedTreeMap<?, ?>) {
removeNullJsonObjects(value);
// here I need to loop again and save somehow result before ??
}
}
return linkedTreeMap;
}
但问题是json的深度可以是0...n。这意味着我应该循环N次并存储它,我不知道如何为其编写代码。
所以我可以拥有任何深度的 json,例如:像这样:
{
"technicalData": {
"attributesList": {
"attributes": [{
"attribute": {
"code": "LocalModelName",
"description": {
"value": "Boer"
}
}
}, {
"attribute": {
"code": "C303"
}
}
]
}
},
"modelGroups": {
"modelGroup": [{}
]
}
}
【问题讨论】: