精易论坛

标题: jsonPaht-快速定位json路径与取值 [打印本页]

作者: gys497    时间: 2024-6-9 13:06
标题: jsonPaht-快速定位json路径与取值
本帖最后由 gys497 于 2024-6-9 13:14 编辑

前言
最近在一个项目中需要处理一些比较复杂的Json结构,需要一层一层的遍历判断,代码量非常的庞大,想着使用Jsonpaht来进行快速定位路径,发现易语言并没有相关的支持,论坛上也没人讨论过,便自己利用JS实现了在易语言使用JsonPaht,代码瞬间简洁了不少,舒服~~~


现将代码发出来供大家使用,非常简单,就是一个调用JS的函数


  
子程序名返回值类型公开备 注
jsonPaht文本型 返回匹配结果,若取值则返回json文本,如取路径则以普通文本方式返回,如多个路径则以英文逗号","为分隔符
参数名类 型参考可空数组备 注
json文本文本型
表达式文本型jsonPaht表达式文本
取出类型整数型0=值;1=路径;默认0



源码以成品模块: Jsonpaht.rar (8.22 KB, 下载次数: 52)


JsonPaht语句在线验证工具:https://www.jsonpath.cn/

JsonPath使用场景
在遇到数据较大的Json数据或比较复杂的Json结构时,通常我们往往需要进行层级的遍历,非常的麻烦与臃肿,这个时候JsonPaht就能帮助你快速的定位路径或读取值

JsonPath的来源
看它的名字你就能知道,这家伙和JSON文档有关系,正如XPath之于XML文档一样,JsonPath为Json文档提供了解析能力,通过使用JsonPath,你可以方便的查找节点、获取想要的数据,JsonPath是Json版的XPath。
JsonPath语法
JsonPath的语法相对简单,它采用开发语言友好的表达式形式,如果你了解类C语言,对JsonPath就不会感到不适应。
JsonPath语法要点:
下表将列举所有支持的语法,并对XPath进行比较:
[td]
XPathJsonPath说明
/$文档根元素
.@当前元素
/.或[]匹配下级元素
..N/A匹配上级元素,JsonPath不支持此操作符
//..递归匹配所有子元素
**通配符,匹配下级元素
@N/A匹配属性,JsonPath不支持此操作符
[][]下标运算符,根据索引获取元素,XPath索引从1开始,JsonPath索引从0开始
``[,]
N/A[start:end:step]数据切片操作,XPath不支持
[]?()过滤表达式
N/A()脚本表达式,使用底层脚本引擎,XPath不支持
()N/A分组,JsonPath不支持

注意:


过滤器运算符
过滤器是用于筛选数组的逻辑表达式。一个典型的过滤器将是[?(@.age > 18)],其中@表示正在处理的当前项目。 可以使用逻辑运算符&&和||创建更复杂的过滤器。 字符串文字必须用单引号或双引号括起来([?(@.color == 'blue')] 或者 [?(@.color == "blue")]).
[td]
操作符描述
==left等于right(注意1不等于'1')
!=不等于
<小于
<=小于等于
>大于
>=大于等于
=~匹配正则表达式[?(@.name =~ /foo.*?/i)]
in左边存在于右边 [?(@.size in ['S', 'M'])]
nin左边不存在于右边
size(数组或字符串)长度
empty(数组或字符串)为空






作者: 淋森沐    时间: 2024-6-9 14:42
感谢
作者: yuxuanju    时间: 2024-6-9 15:55
学习中,感谢分享。
作者: lin0658    时间: 2024-6-9 16:30
感谢分享。
作者: 夏亿    时间: 2024-6-9 22:02
        支持开源~!感谢分享
作者: bianyuan456    时间: 2024-6-9 23:29
已经顶贴,感谢您对论坛的支持!
作者: ZHuanR    时间: 2024-6-10 01:05
已经顶贴,感谢您对论坛的支持!
作者: zhyl8888    时间: 2024-6-10 07:12
虽然不知道LZ在说什么但是感觉很厉害的样子~
作者: year1970    时间: 2024-6-10 08:37
感谢分享
作者: 小虎来了    时间: 2024-6-10 09:38
        感谢分享,很给力!~
作者: 查过    时间: 2024-6-11 07:39
感谢发布原创作品,精易因你更精彩!6666666666666
作者: 豆豆灰常开心    时间: 2024-6-11 07:44
感谢楼主分享!
作者: kyo9766    时间: 2024-6-11 09:56
学习一下 快速定位json路径,感谢分享
作者: 光影魔术    时间: 2024-6-13 22:55
感谢分享源码
作者: nymanyim    时间: 2024-6-24 20:05
哥哥牛逼




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4