You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JsonPath的read方法返回路径而非目标值,原因是什么?

问题分析与解决

你遇到的问题核心在于错误地将JsonNode转成字符串传入JsonPath的parse方法,导致解析异常:

Jackson的JsonNode.toString()输出的是带单引号的非标准JSON格式,而JsonPath默认解析器只识别标准双引号的JSON。这种情况下,JsonPath没有把输入解析成JSON对象,而是当成了一个普通的字符串根节点。当你用$.field1查询时,根节点是字符串,不存在对应的字段,最终出现了返回路径表达式而非目标值的异常行为。

修正方案

直接将JsonNode对象传入parse方法,无需转成字符串,JsonPath支持直接处理Jackson的JsonNode(需确保引入对应的Jackson适配依赖)。

修正后的代码

JsonNode node = ...;
String path = "$.field1";
Configuration conf = Configuration.defaultConfiguration().addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL);

// 直接传入JsonNode对象,跳过字符串转换步骤
ReadContext context = JsonPath.using(conf).parse(node);
Object value = context.read(path);

System.out.println(value);
// 预期输出: value1

依赖说明

确保项目中引入JsonPath的Jackson适配模块,以支持直接解析JsonNode:

<!-- Maven依赖示例 -->
<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>com.jayway.jsonpath</groupId>
    <artifactId>json-path-jackson</artifactId>
    <version>2.8.0</version>
</dependency>

内容的提问来源于stack exchange,提问作者AznBoyStride

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 00:12:46