fastjson2 jsonpath not support integer key

vc6uscn9  于 2022-10-25  发布在  其他
关注(0)|答案(7)|浏览(371)

$.items[0].data.\0\

\0\ is data Object

0是data对象的键 data是个对象 不是数组

pbossiut

pbossiut1#

从fastjson1 升级到fastjson2 发现好多jsonpath 不兼容问题 !数字key在tostring的时候也会报错类型转换错误,貌似底层fastjson2 认为json的key只能是字符串

jfgube3f

jfgube3f2#

还有要支持宽松的 解析模式 很多json都是手写的 不想严格按照json格式来

vkc1a9a2

vkc1a9a23#

String str = "{\"items\": [{\"data\":{\"0\":\"abc\"}}]}";
Object result = JSONPath.eval(str, "$.items[0].data.0");
assertEquals("abc", result);

这个是不是你想要的?

4smxwvx5

4smxwvx54#

String jsonPath = "$.items[0].data.0"; 

    Map data = new LinkedHashMap<>();
    JSONPath.set(data, jsonPath, "设置成功");

设置不进去 我的是fastjson-2.0.15

2izufjch

2izufjch5#

https://oss.sonatype.org/content/repositories/snapshots/com/alibaba/fastjson2/fastjson2/2.0.16-SNAPSHOT/
问题已经修复,请用2.0.16-SNAPSHOT帮忙验证,2.0.16版本预计在10月30日前发布

gab6jxml

gab6jxml7#

Map data = new LinkedHashMap<>();
    JSONPath.set(data,  "$.obj.5", "设置成功");
    System.out.println(JSONObject.toJSONString(data));

会打印:
{"obj":[]}

我希望是打印 {"obj":{5:"设置成功"}} obj是对象 不是数组

我用的最新的2.0.16

相关问题