JSONPath用法:jsonpath的使用方法教程

1 JSONPath简介

1.1 概述

XML精彩强调的优点是提供了大量的工具来分析、转换和有选择地从XML文档中提取数据。Xpath是这些功能强大的工具之一。

对于JSON数据来说,是否应该出现jsonpath这样的工具来解决这个问题。

数据可以通过交互方式从客户端上的JSON结构提取,不需要特殊的脚本。|

客户端请求的JSON数据可以减少到服务器的上的相关部分,从而大幅度减少服务器响应的带宽使用。

jsonpath表达式始终引用JSON结构的方式与Xpath表达式与XML文档使用的方式相同。

1.2 官网

https://github.com/dchester/jsonpath

1.3 在线编辑器

http://jsonpath.com/

二、JSONPath用法

JsonPath表达式总是以与XPath表达式结合使用XML文档相同的方式引用JSON结构。

JsonPath中的“根成员对象”始终称为$,无论是对象还是数组。

JsonPath表达式可以使用点表示法
$.store.book [0].title
或括号表示法
$[‘store’][‘book’][0][‘title’]

2.1 操作符

操作

说明

$

查询根元素。这将启动所有路径表达式。

@

当前节点由过滤谓词处理。

*

通配符,必要时可用任何地方的名称或数字。

..

深层扫描。 必要时在任何地方可以使用名称。

.<name>

点,表示子节点

[‘<name>’ (, ‘<name>’)]

括号表示子项

[<number> (, <number>)]

数组索引或索引

[start:end]

数组切片操作

[?(<expression>)]

过滤表达式。 表达式必须求值为一个布尔值。

2.2 函数

函数可以在路径的尾部调用,函数的输出是路径表达式的输出,该函数的输出是由函数本身所决定的。

函数

描述

输出

min()

提供数字数组的最小值

Double

max()

提供数字数组的最大值

Double

avg()

提供数字数组的平均值

Double

stddev()

提供数字数组的标准偏差值

Double

length()

提供数组的长度

Integer

2.3 过滤器运算符

过滤器是用于筛选数组的逻辑表达式。一个典型的过滤器将是[?(@.age > 18)],其中@表示正在处理的当前项目。 可以使用逻辑运算符 && 和 || 创建更复杂的过滤器。 字符串文字必须用单引号或双引号括起来([?(@.color ‘blue’)] 或者 [?(@.color “blue”)]).

操作符

描述

==

left等于right(注意1不等于’1’)

!=

不等于

<

小于

<=

小于等于

>

大于

>=

大于等于

=~

匹配正则表达式[?(@.name =~ /foo.*?/i)]

in

左边存在于右边 [?(@.size in [‘S’, ‘M’])]

nin

左边不存在于右边

size

(数组或字符串)长度

empty

(数组或字符串)为空

2.4 示例

{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "Nigel Rees",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": 12.99
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

JsonPath路径

结果

$.store.book[*].author

获取json中store下book下的所有author值

$..author

获取所有json中所有author的值

$.store.*

所有的东西,书籍和自行车都有

$.store..price

获取json中store下所有price的值

$..book[2]

获取json中book数组的第3个值

$..book[-2]

倒数第二本书

$..book[0,1]

前两本书

$..book[:2]

从索引0(包括)到索引2(排除)的所有图书

$..book[1:2]

从索引1(包括)到索引2(排除)的所有图书

$..book[-2:]

获取json中book数组的最后两个值

$..book[2:]

获取json中book数组的第3个到最后一个的区间值

$..book[?(@.isbn)]

获取json中book数组中包含isbn的所有值

$.store.book[?(@.price < 10)]

获取json中book数组中price<10的所有值

$..book[?(@.price <= $[‘expensive’])]

获取json中book数组中price<=expensive的所有值

$..book[?(@.author =~ /.*REES/i)]

获取json中book数组中的作者以REES结尾的所有值(REES不区分大小写)

$..*

逐层列出json中的所有值,层级由外到内

$..book.length()

获取json中book数组的长度

本文链接:https://www.dzdvip.com/38339.html 版权声明:本文内容均来源于互联网。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 395045033@qq.com,一经查实,本站将立刻删除。
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年9月5日 20:43
下一篇 2022年9月6日 21:11

相关推荐

  • wordpress怎么添加图片广告代码?

    由于对WORDPRESS博客程序摸索了一段时间,对代码有了初步的了解,所以在wordpress添加广告代码也基本掌握了,基本上都能搞定了。当然既然可以放置谷歌广告,其他的联盟广告也能行,关键是找对位置和广告代码前面应该添加什么代码。

    2021年5月2日
    58
  • 农村医疗保险网上怎么缴费(农村医疗保险网上缴费流程)

    在微信的服务界面,点击【城市服务】。进入城市服务后,点击【社保】。在社保服务页面,点击【社保缴费】。然后,选择服务列表中的【城乡居民医疗保险】。在医疗缴费页面,输入身份证和姓名,然后,点击【下一步】,根据系统提示,完成缴费即可。 农村医疗保险网上缴费流程 新农合医保每年一般到12月20号左右结束,以前新农合医保缴费都是村干部上门收取,或者是到大队去交,但现在大多都是让到网上缴费了,那么新农合医保网上缴费怎么交?下面一起来了解流程步骤。 微信缴费步骤:打开手机微信APP,点击右下角“我”—支付—生活缴费—社保医保—选择XX省/市城乡居民医疗保险—正确输入参保人的身份证号码、姓名—点击确认缴费编号—点击下一步—立即缴费,显示“缴费成功”就完成了。   支付宝缴费步骤:打开手机支付宝APP,点击主界面市民中心—办事大厅—社保—居民医保缴费—正确输入参保人的身份证号码、姓名—点击确认缴费编号—点击下一步—立即缴费,显示“缴费成功”就完成了。   官网缴费步骤:登录当地所处城市的社会保险网上申报服务平台,进入网上自助缴费界面,输入姓名、身份证号码,阅读接受打钩,点击发送短信验证码,输入验证码进行查询,之后会显示参保人相关信息,确认无误后就可以点击支付,支付完成后记得查看缴费结果。 一般情况下,想要通过手机交农村合作医疗保险费,需要当地医保部门推出了相关缴费渠道,如手机APP、微信公众号、官网等,具体需要咨询当地的相关部门。若是不通过手机缴费,可以找当地村干部代缴,或者到医保部门实地缴费。

    2022年12月8日
    50
  • 中兴推出鼠标大小的电脑:仅重55克 可塞进衣服口袋播

    3月11日,中兴通信为大家介绍了旗下一款薄到可以塞进衣服口袋的电脑产品——中兴太极云电脑W100D。 这款电脑重量仅55克,集轻巧、便捷、高效、极简、易用于一体,简单连接即可访问云端桌面系统。 其极低功耗,绿色环保;无线连接,简便易用;高性价比,有效降低套餐成本;非常适合办公室轻办公场景和家庭教育场景。 Type-C供电,支持HDMI高清显示,所有数据运行在数据中心,确保信息安全。 云电脑最大的痛点在于延迟,中兴云电脑W100D号称在100Kbps~20Mbps的带宽范围内自适应控制桌面码,保障用户体验,节约带宽。低码高清技术国内领先,有效保障质差网络下的用户体验。

    2022年3月12日
    11
  • 新能源汽车有哪些类型 新能源都有哪几种分类

    很多人认为新能源汽车一般可以四种,其实不然,它大致是可以分为5种的。其中分别为纯电动汽车、插电混合汽车、增程式混合汽车、燃料电池汽车、以及油电混合汽车。只是对于大部分城市而言,符合新能源指标政策的,只有纯电动汽车、插电混合动力汽车。 第一种:插电混合动力车型 插电混合动力车型在国内还算不上普及,但“混合动力”这个名词对中国消费者并不陌生,我们经常可以看到以丰田普锐斯和雷克萨斯CT200h为代表的日系混合动力车型在路上穿梭。插电混合动力,就是可以“插电”的混合动力,因此我们需要首先先了解一下什么是混合动力车型。 混合动力按照不同的定义可以有多种分类方式,其中一种为按照内燃机和电动机动力的混合度进行分类。目前国内普遍采用的混动系统按混合度分类标准为: 微混合型:电动机峰值功率和发动机的额定功率比≤5%; 轻度混合型:电动机峰值功率和发动机的额定功率比为5%-15%; 中度混合型:电动机峰值功率和发动机的额定功率比为15%-40%; 重度混合型:电动机峰值功率和发动机的额定功率比为大于40%。 顾名思义,插电(plug-in),就是可以通过介入外界电源来对动力电池组进行充电。从理论上来说,只要满足这一点的以上任何一类混合动力车型都属于插电混合动力车型。不过,我们身边最常见的插电混合动力车型都采用了混联的结构。 第二种:增程式混动汽车 增程式指的用电力去驱,而燃油发动机去充电。增程式混合动力并不像上面两种车型同时具备燃油驱动系统和电力驱动系统。该车的燃油发动机只能用于给电池充电,并不能直接用于驱动。这种车型的优点就是购车和维修成本等方面费用比较低,只是在高速行驶的时候,会造成燃油浪费。由于仅为发电运行的内燃机可以长期运转在较为经济的工况下,因此相比于传统燃料车型,增程式混合动力车型在增程状态下依然具有燃耗方面的优势,同时具有电动车运行平顺的优点。 第三种:纯电汽车 纯电动汽车,电动汽车的英文名称是ElectricVehicle,缩写就是EV,纯电动汽车,由电动机驱动车辆,电动机由动力电池提供动力。特点是只能通过充电的方式满足能量补给。电动汽车没有发动机,由电动机和电池、车载充电器、蓄电池、控制装置等代替,用充电电池的电力代替汽油驱动汽车行驶。不搭载汽油发动机,因此在行驶的过程中完全不排放废气,与汽油汽车相比,噪音及震动都较低,最大的特点及优点是在减速时,能源可再生重复利用。…

    2022年10月27日
    49
  • 20万件韵达快递受到影响,卖家又躺枪

    近期,北京韵达快递长阳分部出现聚集性疫情,出现疫情之后,20余万包裹被追朔调查,在5月5日之后接收到韵达快递的买家,要做报备。 除了北京市,还有其他市也有波及,消费者在网上群情激奋,洛阳的网友就说因为快递全小区都要做核酸,还有几位网友收到过韵达快递,已经被隔离了。 杭州的“阳性”包裹事件才刚刚过去,当时给电商行业造成了巨大的影响,长达一个月的时间里网店没有流量没有成交,多少小商家在这个月里倒闭关门。而这次韵达快递出事,同样也会引发这样的后果。 已经有网友表示疫情期间要尽量避免网购了,疫情本来是电商发展的好机会,结果因为物品上也会携带病毒,所以导致物流受限、快递“带毒”,电商行业先是经历全国大部分地区都没办法发货的窘境,再是快递被拒收退货,电商商家一个字:难! 618大促快来了,今年想要参加活动的商家肯定早就在预备了,疫情本来已经在慢慢好转了,如果快递的问题不解决,大家这十几年培养的网购习惯会不会在这几个月里被扭转,这是行业危机。 同城配送正在崛起现在实体商们也不会死守自己那一亩三分地了,也加入了同城配送的大军,在一些生活服务软件上可以买衣服,买日用品,买柴米油盐酱醋茶,以前快递最快也是次日达,现在同城配送1小时内就能帮你把购买的物品送到,而且实体店就在自己的城市,退换都很方便。 各大电商平台都在加码同城配送,这对于平台来说是多了一条生钱之道,但对于网店商家来说却是压力,现在有实体门店的电商商家还算是有一线生机,能线上线下双结合,只要自己的城市没有出现疫情,日子就还能混着过。 网店做不下去了,也不要随意放弃店铺,还能将网店出售出去换一笔现金,网店转让现在还算是比较安全的,过户快速,店铺跟卖家完全脱钩,没有售后风险。

    2022年6月1日
    72
  • 我国导热界面材料市场发展现状分析

    行业背景 导热界面材料是一种应用于功率器件与电子散热器之间的材料,主要用于填补两种材料接合或接触时产生的微空隙及表面凹凸不平的孔洞,提高散热性能。 导热界面材料属于半导体产业链。上游原材料包括石墨,PI膜,硅橡胶等,下游应用为LED行业,计算机行业,能源行业,电信行业等。 我国高端热界面材料基本依赖从日本、韩国、欧美等发达国家进口,国产化电子材料占比非常低,大大阻碍了我国的电子信息产业发展和限制终端企业的创新活力。 行业现状 热界面材料应用市场主要以通信网络(5G)、汽车电子(新能源)、人工智能、LED 等为代表的领域。在未来5G时代,热界面材料在通信行业规模化应用,将带来巨大的增量需求。5G 时代下的物联网应用,除了手机和电脑,5G 终端还扩展到了汽车、家用电器、智能穿戴、工业设备等,终端设备的丰富也将直接拉动对导热材料和器件的需求,利好导热材料行业。 调研数据显示,2015年,全球热界面材料市场规模为7.64亿美元,2021年全球热界面材料市场规模达到12亿美元,2015-2021年期间年增长率为8.2%。 2015年我国导热材料市场约占全球市场份额的20%,预计2021年可接近30%。热界面材料属于细分市场,美国和欧洲公司在国际及国内中高端市场上处在垄断地位。 我国高端导热材料生产基材需要国外供应商提供,产品性能指标以及研发积累与欧美企业仍存在一定差距。对比国外知名的热界面材料生产厂商,如日本信越、美国道康宁、德国汉高、美国固美丽等,我国热界面材料生产厂商的性能较差,无法满足高端芯片的封装要求。

    2022年7月22日
    118