fastjson2 [BUG]JSONPath.extract抛异常

icomxhvb  于 2022-10-25  发布在  其他
关注(0)|答案(3)|浏览(603)

问题描述

JSONPath.extract解析报Exception

环境信息

  • OS信息: [e.g.:Mac macOS Monterey]
  • JDK信息: [e.g.:jdk-17.0.2]
  • 版本信息:[e.g.:Fastjson2 2.0.15]

重现步骤

执行以下代码

String tmpJson = "{\"arr\": [{ \"key\": \"value1\" }, { \"key\": \"value2\" }]}";
String tmpPath = "$.arr[key='value1']";
Object tmpObj = JSONPath.extract(tmpJson, tmpPath);
System.out.println(tmpObj);

期待的正确结果

{"key": "value1"}

相关日志输出

以下是path="$.arr[key='value1']"的异常
Exception in thread "main" com.alibaba.fastjson2.JSONException: TODO : k
at com.alibaba.fastjson2.JSONPath$JSONPathParser.parseArrayAccess(JSONPath.java:6338)
at com.alibaba.fastjson2.JSONPath$JSONPathParser.parse(JSONPath.java:6160)
at com.alibaba.fastjson2.JSONPath.of(JSONPath.java:398)
at com.alibaba.fastjson.JSONPath.extract(JSONPath.java:30)

如果path="$.arr[?(key='value1')]"则输出以下异常
Exception in thread "main" com.alibaba.fastjson2.JSONException: jsonpath syntax error, offset 9, character k, line 1, column 10, fastjson-version 2.0.15 $.arr[?(key='value1')]
at com.alibaba.fastjson2.JSONPath$JSONPathParser.parseFilter(JSONPath.java:6839)
at com.alibaba.fastjson2.JSONPath$JSONPathParser.parseArrayAccess(JSONPath.java:6313)
at com.alibaba.fastjson2.JSONPath$JSONPathParser.parse(JSONPath.java:6160)
at com.alibaba.fastjson2.JSONPath.of(JSONPath.java:398)
at com.alibaba.fastjson.JSONPath.extract(JSONPath.java:30)

附加信息

测试过fastjson 1.2.69版本无此问题

dgiusagp

dgiusagp1#

String tmpJson = "{\"arr\": [{ \"key\": \"value1\" }, { \"key\": \"value2\" }]}";
String tmpPath = "$.arr[?(@.key='value1')]";
Object tmpObj = JSONPath.extract(tmpJson, tmpPath);
assertEquals("[{\"key\":\"value1\"}]", JSON.toJSONString(tmpObj));

可以这样写

cgvd09ve

cgvd09ve2#

不建议修改用法,新老版本不兼容,而且网上的文档又没有更新,这样显得特别bug。这个是官方的文档,并没有@的用法: https://alibaba.github.io/fastjson2/jsonpath_cn

7eumitmz

7eumitmz3#

https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.17-SNAPSHOT/
问题已修复,请用2.0.17-SNAPSHOT版本验证,2.0.17版本可能在这个周末发布

相关问题