JsonPath用法详解

JsonPath用法详解JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、PHP和Java。JSONPath的安装方法如下:pipinstalljsonpathJSONPath语法和XPATH语法对比JSON结构清晰,可读性高,复杂度低,非常容易匹配。JSONPath的语法与Xpath类似,如下表所示为JSONPath与XPath语法对比。下面使用一个JSON文档演示JSONPath的具体使用。JSON文档的内容如下:{

大家好,又见面了,我是你们的朋友全栈君。

JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、PHP和Java。

JSONPath的安装方法如下:

pip install jsonpath

JSONPath语法和XPATH语法对比 JSON结构清晰,可读性高,复杂度低,非常容易匹配。JSONPath的语法与Xpath类似,如下表所示为JSONPath与XPath语法对比。
在这里插入图片描述下面使用一个JSON文档演示JSONPath的具体使用。JSON 文档的内容如下:

{ 
   
  "store": { 
   
    "book":[
      { 
    "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { 
    "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
    }
  }
}

假设变量bookJson中已经包含了这段JSON字符串,可通过以下代码反序列化得到JSON对象:

books=json.loads(bookJson)

(1)查看store下的bicycle的color属性:

checkurl = "$.store.bicycel.color"
print(jsonpath.jsonpath(books, checkurl))
# 输出:['red']

(2)输出book节点中包含的所有对象:

checkurl = "$.store.book[*]"
object_list=jsonpath.jsonpath(books, checkurl)
print(object_list)

(3)输出book节点的第一个对象:

checkurl = "$.store.book[0]"
obj = jsonpath.jsonpath(books, checkurl)
print(obj)
# 输出: ['category': 'reference', 'author': 'Nigel Rees', 'title': 'Sayings of the Century', 'price': 8.95}]

(4)输出book节点中所有对象对应的属性title值:

checkurl = "$.store.book[*].title"
titles = jsonpath.jsonpath(books, checkurl)
print(titles)
# 输出: ['Sayings of the Century', 'The Lord of the Rings']

(5)输出book节点中category为fiction的所有对象:

checkurl = "$.store.book[?(@.category=='fiction')]”
books=jsonpath.jsonpath(books, checkurl)
print(books)
# 输出:[{'category': 'fiction', 'author': 'J. R. R. Tolkien', 'title': 'The Lordof the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]

(6)输出book节点中所有价格小于10的对象:

checkurl="$.store.book[?(@.price<10)]"
books = jsonpath.jsonpath(books, checkurl)
print(books)
# 输出: [{'category': 'reference', 'author': 'Nigel Rees', 'title':'Sayings of the Century', 'price': 8.95}]

(7)输出book节点中所有含有isb的对象:

checkurl = "$.store.book[?(@.isb)]"
books = jsonpath.jsonpath(books,checkurl)
print(books)
# 输出: [{'category': 'fiction', 'author': 'J. R. R. Tolkien', 'title': 'The Lord of the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/150765.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 怎样利用爬虫爬网站数据(爬虫可以爬取哪些数据)

    回顾2016年,我用爬虫做了很多事情。1、微信好友的爬虫,了解一下你的好友全国分布,男女比例,听起来似乎是一个不错的想法,当然你还可以识别一下你的好友有多少人是用自己照片作为头像的,详细的内容可以点击这里:Python对微信好友进行简单统计分析2、拉勾网的数据那么多的招聘信息有用吗?当然有用,你想了解一下你所在城市的各种主流语言(Java、PHP、JavaScript、Pytho…

    2022年4月16日
  • Laravel 单设备登录

    Laravel 单设备登录

    2021年10月27日
  • Android实现两次按下返回键退出「建议收藏」

    Android实现两次按下返回键退出

    2022年2月6日
  • php实时刷新数据_批量短网址php搭建

    php实时刷新数据_批量短网址php搭建http协议介绍:http协议是请求/响应范式的,每一个http响应都是由一个对应的http请求产生的;http协议是无状态的,多个http请求之间是没有关系的.http长连接:目前http协议普遍使用的是1.1版本,之前有个1.0版本,两者之间的一个区别是1.1支持http长连接,或者叫持久连接.1.0不支持http长连接,每次一个ht…

    2022年10月14日
  • 数据仓库ETL开发如何进行测试

    数据仓库ETL开发如何进行测试 数据仓库ETL开发如何进行测试?数据仓库ETL开发如何进行测试?由于数据仓库中数据量比较庞大,还有为了安全因素,一般在开发库和测试库数据不完全或者和生成库(正式库)不一致,导致在测试库和开发库中进行代码测试存在一定的问题。我们知道在软件开发过程中有很多测试的方法,按照测试方法可以分为白盒测试和黑盒测试。白盒测试也称结构测试或逻辑驱动测试,是指基于一个应用代码的内部逻辑

    2022年5月9日
  • 从零开始搭建服务器,拥有一个属于自己的网站

    从零开始搭建服务器,拥有一个属于自己的网站创建一个属于自己,任何人都可以访问的网站(最最最详细的步骤)这篇文章将从购买服务器一直到最后网站完成备案,详细说明整个过程,就算是不懂编程的人照样可以拥有属于自己的服务器和网站必备条件:1:电脑一台2:网络3:money(30块钱)4:身份证一:首先选择阿里云、腾讯云或者其他任何一家的云,租一台ECS服务器。不管是哪一家的云服务器,基本上都有十块钱一个月的服务器,阿里云12-24岁自动认证学生,可以享受十块钱一个月的价格,这里就以阿里云为例。(注意:选择哪一家的服务器最好就使用哪一家的域名注

    2022年5月5日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号