From f60e3c219af788aadc88ae25cd9341ee3617c47e Mon Sep 17 00:00:00 2001 From: aCodingAddict <46143242+aCodingAddict@users.noreply.github.com> Date: Sat, 30 Oct 2021 16:02:02 +0800 Subject: [PATCH] [DS-6606] [common] JSONUtils#getNodeString String type (#6618) --- .../apache/dolphinscheduler/common/utils/JSONUtils.java | 7 ++++++- .../dolphinscheduler/common/utils/JSONUtilsTest.java | 4 +++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java index 92da8fc3c5..7bcdf43d3c 100644 --- a/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java +++ b/dolphinscheduler-common/src/main/java/org/apache/dolphinscheduler/common/utils/JSONUtils.java @@ -31,6 +31,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.TimeZone; import org.slf4j.Logger; @@ -231,7 +232,11 @@ public class JSONUtils { public static String getNodeString(String json, String nodeName) { try { JsonNode rootNode = objectMapper.readTree(json); - return rootNode.has(nodeName) ? rootNode.get(nodeName).toString() : ""; + JsonNode jsonNode = rootNode.findValue(nodeName); + if (Objects.isNull(jsonNode)) { + return ""; + } + return jsonNode.isTextual() ? jsonNode.asText() : jsonNode.toString(); } catch (JsonProcessingException e) { return ""; } diff --git a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java index 786fb76146..955a7e9180 100644 --- a/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java +++ b/dolphinscheduler-common/src/test/java/org/apache/dolphinscheduler/common/utils/JSONUtilsTest.java @@ -151,7 +151,9 @@ public class JSONUtilsTest { Assert.assertEquals("", JSONUtils.getNodeString("", "key")); Assert.assertEquals("", JSONUtils.getNodeString("abc", "key")); Assert.assertEquals("", JSONUtils.getNodeString("{\"bar\":\"foo\"}", "key")); - Assert.assertEquals("\"foo\"", JSONUtils.getNodeString("{\"bar\":\"foo\"}", "bar")); + Assert.assertEquals("foo", JSONUtils.getNodeString("{\"bar\":\"foo\"}", "bar")); + Assert.assertEquals("[1,2,3]", JSONUtils.getNodeString("{\"bar\": [1,2,3]}", "bar")); + Assert.assertEquals("{\"1\":\"2\",\"2\":3}", JSONUtils.getNodeString("{\"bar\": {\"1\":\"2\",\"2\":3}}", "bar")); } @Test