From 7154daacffb4c7103dc2c4204bc4641b197dd64d Mon Sep 17 00:00:00 2001 From: taojinlong Date: Mon, 14 Apr 2025 17:56:03 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20API=E6=95=B0=E6=8D=AE=E6=BA=90=E6=9F=90?= =?UTF-8?q?=E6=9D=A1=E8=AE=B0=E5=BD=95=E4=B8=8D=E5=8C=85=E5=90=AB=E6=9F=90?= =?UTF-8?q?=E4=B8=AA=E5=AD=97=E6=AE=B5=E6=97=B6=EF=BC=8C=E7=BD=AE=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataease/datasource/provider/ApiUtils.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java b/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java index 0c4486c149..f0c605938b 100644 --- a/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java +++ b/core/core-backend/src/main/java/io/dataease/datasource/provider/ApiUtils.java @@ -5,7 +5,9 @@ import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; +import com.jayway.jsonpath.Configuration; import com.jayway.jsonpath.JsonPath; +import com.jayway.jsonpath.Option; import io.dataease.extensions.datasource.dto.ApiDefinition; import io.dataease.extensions.datasource.dto.ApiDefinitionRequest; import io.dataease.exception.DEException; @@ -26,7 +28,9 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; public class ApiUtils { - + private static Configuration jsonPathConf = Configuration.builder() + .options(Option.DEFAULT_PATH_LEAF_TO_NULL, Option.ALWAYS_RETURN_LIST) + .build(); private static String path = "['%s']"; public static ObjectMapper objectMapper = CommonBeanFactory.getBean(ObjectMapper.class); @@ -782,9 +786,15 @@ public class ApiUtils { List> columnDataList = new ArrayList<>(); for (int i = 0; i < jsonPaths.size(); i++) { List data = new ArrayList<>(); - Object object = JsonPath.read(result, jsonPaths.get(i)); + Object object = JsonPath.using(jsonPathConf).parse(result).read(jsonPaths.get(i)); if (object instanceof List && jsonPaths.get(i).contains("[*]")) { - data = (List) object; + for (Object o : (List) object) { + if (Objects.isNull(o)) { + data.add(""); + } else { + data.add(o.toString()); + } + } } else { if (object != null) { data.add(object.toString());