|
|
@@ -24,6 +24,7 @@ import java.lang.reflect.Type;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Iterator;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* JSON 工具类
|
|
|
@@ -315,16 +316,37 @@ public class JsonUtils {
|
|
|
// 处理对象节点
|
|
|
if (node.isObject()) {
|
|
|
ObjectNode objectNode = (ObjectNode) node;
|
|
|
- objectNode.fields().forEachRemaining(entry -> {
|
|
|
- JsonNode cleaned = cleanEmptyFields(entry.getValue());
|
|
|
|
|
|
- // 删除空值键
|
|
|
- if (isEmptyNode(cleaned)) {
|
|
|
- objectNode.remove(entry.getKey());
|
|
|
- } else {
|
|
|
- objectNode.set(entry.getKey(), cleaned);
|
|
|
+ if (objectNode.isEmpty()) {
|
|
|
+ return objectNode;
|
|
|
+ }
|
|
|
+ if( objectNode.fields() == null || !objectNode.fields().hasNext()){
|
|
|
+ return objectNode;
|
|
|
+ }
|
|
|
+ // objectNode.fields().forEachRemaining(entry -> {
|
|
|
+ for (Iterator<Map.Entry<String, JsonNode>> it = objectNode.fields(); it.hasNext(); ) {
|
|
|
+ try {
|
|
|
+ Map.Entry<String, JsonNode> entry = it.next();
|
|
|
+ if(entry == null){
|
|
|
+ return NullNode.getInstance();
|
|
|
+ }
|
|
|
+ JsonNode cleaned = cleanEmptyFields(entry.getValue());
|
|
|
+ assert cleaned != null;
|
|
|
+ log.info("cleaned:{}", cleaned.isNull());
|
|
|
+ log.info("cleaned:{}", entry.getKey());
|
|
|
+ // 删除空值键
|
|
|
+ if (isEmptyNode(cleaned)) {
|
|
|
+ objectNode.remove(entry.getKey());
|
|
|
+ } else {
|
|
|
+ objectNode.set(entry.getKey(), cleaned);
|
|
|
+ }
|
|
|
+ }catch (Exception e){
|
|
|
+ log.error("cleanEmptyFields error:{}", e.getMessage());
|
|
|
+ return objectNode;
|
|
|
}
|
|
|
- });
|
|
|
+
|
|
|
+ }
|
|
|
+ //});
|
|
|
return objectNode;
|
|
|
}
|
|
|
|
|
|
@@ -369,4 +391,34 @@ public class JsonUtils {
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ public static void setNullValuesToDefault(ObjectNode rootNode) {
|
|
|
+ // 遍历当前 ObjectNode 的所有字段
|
|
|
+ Iterator<Map.Entry<String, JsonNode>> fields = rootNode.fields();
|
|
|
+ while (fields.hasNext()) {
|
|
|
+ Map.Entry<String, JsonNode> entry = fields.next();
|
|
|
+ String key = entry.getKey();
|
|
|
+ JsonNode valueNode = entry.getValue();
|
|
|
+
|
|
|
+ // 1. 处理值为 null 的字段
|
|
|
+ if (valueNode.isNull() || (valueNode.isTextual() && valueNode.asText().isEmpty())) {
|
|
|
+ rootNode.put(key, "—"); // 直接替换为字符串 "—"
|
|
|
+ }
|
|
|
+ // 2. 递归处理嵌套的 ObjectNode
|
|
|
+ else if (valueNode.isObject()) {
|
|
|
+ setNullValuesToDefault((ObjectNode) valueNode);
|
|
|
+ }
|
|
|
+ // 3. 递归处理嵌套的 ArrayNode(遍历数组中的每个元素)
|
|
|
+ else if (valueNode.isArray()) {
|
|
|
+ ArrayNode arrayNode = (ArrayNode) valueNode;
|
|
|
+ for (int i = 0; i < arrayNode.size(); i++) {
|
|
|
+ JsonNode element = arrayNode.get(i);
|
|
|
+ if (element.isObject()) {
|
|
|
+ setNullValuesToDefault((ObjectNode) element); // 递归处理数组中的对象
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|