gpt4 book ai didi

java - JSONObject 删除空值对

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:25:01 27 4
gpt4 key购买 nike

这是我的 Json 文件:

{  
"models":{},
"path":[
{
"path":"/web-profiles",
"operations":[
{
"type":"",
"responseMessages":[]
}
]
}
],
"produces":[]
}

如果键的值为空(包括[]、""、{})。如何从 Json 文件中删除这些对。

  1. 我尝试使用 JSONObject 内置函数来删除不必要的对。但是,它没有用。
  2. 我尝试使用字符串方法逐行处理。它有太多案例,我无法在我的代码中涵盖所有这些案例。 (例如,子键'operations',当你想删除所有空值时,这个键(操作)值对也应该被删除。)有什么想法吗?

最佳答案

首先,你应该反序列化jsonMap<String, Object> .其次,循环映射条目以找出哪些键具有空值或哪些键具有值是 ArrayList 的实例。但清空并从 Map 中删除.最后,序列化 Mapjson .

试试这段代码:

String json = "{'a': 'apple', 'b': 'ball', 'c': 'cat', 'd': null, 'e': []}";
Type type = new TypeToken<Map<String, Object>>() {}.getType();
Map<String, Object> data = new Gson().fromJson(json, type);

for (Iterator<Map.Entry<String, Object>> it = data.entrySet().iterator(); it.hasNext();) {
Map.Entry<String, Object> entry = it.next();
if (entry.getValue() == null) {
it.remove();
} else if (entry.getValue() instanceof ArrayList) {
if (((ArrayList<?>) entry.getValue()).isEmpty()) {
it.remove();
}
}
}

json = new GsonBuilder().setPrettyPrinting().create().toJson(data);
System.out.println(json);

关于java - JSONObject 删除空值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31039207/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com