本文仅是测试验证使用jsonPath的功能,演示如何使用,详细的介绍可参考GitHub。

测试第一步安装jsonPath:

C:\>pip install Jsonpath

Collecting Jsonpath

Downloading jsonpath-0.82.tar.gz (9.6 kB)

Preparing metadata (setup.py) … done

Using legacy ‘setup.py install’ for Jsonpath, since package ‘wheel’ is not installed.

Installing collected packages: Jsonpath

Running setup.py install for Jsonpath … done

Successfully installed Jsonpath-0.82

https://github.com/json-path/JsonPath

第2步创建用于测试的json文件,依据GitHub示例,稍作修改的测试Json文件如下:

{“store”: {

“book”: [

{“category”: “编程”,

“author”: “Dinnes”,

“title”: “C#高级编程”,

“price”: 99.95

},

{“category”: “编程”,

“author”: “Ritchie”,

“title”: “WPF编程宝典”,

“price”: 12.99

},

{“category”: “编程”,

“author”: “Jeff”,

“title”: “Python爬虫”,

“isbn”: “0-553-21311-3”,

“price”: 78.99

},

{“category”: “编程”,

“author”: “Jack”,

“title”: “Python数据分析”,

“isbn”: “0-395-19395-8”,

“price”: 89.99

}

],

“bicycle”: {

“author”: “法拉利”,

“color”: “黑色”,

“price”: 1999.95

}

}

}

文件名为Demo.json

第3步测试功能:

导入库

import json

import jsonpath

jsObj = json.load(open(“Demo.json”, “r”, encoding=‘utf-8’))

测试1:获取所有书的作者

authors = jsonpath.jsonpath(jsObj, ‘$.store.book[*].author’)

print(authors)

输出:

[‘Dinnes’, ‘Ritchie’, ‘Jeff’, ‘Jack’]

测试2:获取所有的作者,任何包含作者的元素

authors = jsonpath.jsonpath(jsObj, ‘$…author’)

print(authors)

输出:

[‘Dinnes’, ‘Ritchie’, ‘Jeff’, ‘Jack’, ‘法拉利’]

测试3:获取store 下面的所有元素

all_elements = jsonpath.jsonpath(jsObj, ‘$.store.*’)

print(all_elements)

输出:

[[{‘category’: ‘编程’, ‘author’: ‘Dinnes’, ‘title’: ‘C#高级编程’, ‘price’: 99.95}, {‘category’: ‘编程’, ‘author’: ‘Ritchie’, ‘title’: ‘WPF编程宝典’, ‘price’: 12.99}, {‘category’: ‘编程’, ‘author’: ‘Jeff’, ‘title’: ‘Python爬虫’, ‘isbn’: ‘0-553-21311-3’, ‘price’: 78.99}, {‘category’: ‘编程’, ‘author’: ‘Jack’, ‘title’: ‘Python数据分析’, ‘isbn’: ‘0-395-19395-8’, ‘price’: 89.99}], {‘author’: ‘法拉利’, ‘color’: ‘黑色’, ‘price’: 1999.95}]

测试4:获取store 节点下所有商品的价格

all_prices = jsonpath.jsonpath(jsObj, ‘$.store…price’)

print(all_prices)

输出:

[99.95, 12.99, 78.99, 89.99, 1999.95]

测试5:获取第3本书的所有元素

book = jsonpath.jsonpath(jsObj, ‘$…book[2]’)

print(book)

输出:

[{‘category’: ‘编程’, ‘author’: ‘Jeff’, ‘title’: ‘Python爬虫’, ‘isbn’: ‘0-553-21311-3’, ‘price’: 78.99}]

测试6:获取最后一本书的所有元素

last_book = jsonpath.jsonpath(jsObj, ‘$…book[(@.length-1)]’)

print(last_book)

输出:

[{‘category’: ‘编程’, ‘author’: ‘Jack’, ‘title’: ‘Python数据分析’, ‘isbn’: ‘0-395-19395-8’, ‘price’: 89.99}]

测试7:获取前2本书的所有元素

# b_list = jsonpath.jsonpath(jsObj, ‘$…book[0,1]’)  或者

b_list = jsonpath.jsonpath(jsObj, ‘$…book[0:2]’)

print(b_list)

输出:

[{‘category’: ‘编程’, ‘author’: ‘Dinnes’, ‘title’: ‘C#高级编程’, ‘price’: 99.95}, {‘category’: ‘编程’, ‘author’: ‘Ritchie’, ‘title’: ‘WPF编程宝典’, ‘price’: 12.99}]

测试8:获取包含属性ISBN的元素,即属性过滤

b_isbn = jsonpath.jsonpath(jsObj, ‘$…book[?(@.isbn)]’)

print(b_isbn)

输出:

[{‘category’: ‘编程’, ‘author’: ‘Jeff’, ‘title’: ‘Python爬虫’, ‘isbn’: ‘0-553-21311-3’, ‘price’: 78.99}, {‘category’: ‘编程’, ‘author’: ‘Jack’, ‘title’: ‘Python数据分析’, ‘isbn’: ‘0-395-19395-8’, ‘price’: 89.99}]

测试9:价格过滤

选取价格大于90的元素

b_P = jsonpath.jsonpath(jsObj, ‘$…book[?(@.price >90)]’)

print(b_P)

输出:

[{‘category’: ‘编程’, ‘author’: ‘Dinnes’, ‘title’: ‘C#高级编程’, ‘price’: 99.95}]

JsonPath 解析Josn字符串相关推荐

  1. Java整合Jsonpath解析Json字符串

    JsonPath是一种简单的方法来提取给定JSON文档的部分内容 引入依赖 <dependency><groupId>com.jayway.jsonpath</group ...

  2. C#解析JSON字符串总结

    C#解析JSON字符串总结 JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2 ...

  3. c#解析json字符串处理清晰易懂的方法

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  4. java json path_Java使用JSONPath解析JSON完整内容详解

    JsonPath是一种简单的方法来提取给定JSON文档的部分内容. JsonPath有许多编程语言,如Javascript,Python和PHP,Java. JsonPath提供的json解析非常强大 ...

  5. c#解析json字符串数组_C#解析JSON字符串总结

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  6. 小案例Josn字符串的生成

    零.前言 1).写了一个安卓的在线播放各个电视台的小demo,放在手机和电视上都能看,但资源写在string.xml里感觉挺low 2).还是转成json吧,维护起来方便些,或放在服务端也挺好,一个一 ...

  7. c语言解析xml字符串_Python XML解析

    Python XML解析 什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是 ...

  8. java 解析二进制_java实现解析二进制文件(字符串、图片)

    1.需求说明,实现细节要求: 解析二进制文件 files\case10\binary,其中包含一个字符串和一张图片,数据文件格式为字符串数据长度(2字节)+字符串内容+图片数据长度(4字节)+图片数据 ...

  9. oracle无法解析连接符,oracle无法解析连接字符串,请教

    oracle无法解析连接字符串,请教 C# code: string StrConnection = "Server=127.0.0.1;Data Source=kagami;User ID ...

  10. 框架选修课之dom4j解析xml字符串实例

    DOM4J 与利用DOM.SAX.JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml ...

最新文章

  1. python import 与from import主要区别,前者导入所有,后者导入指定方法 变量
  2. 极客Web前端开发资源大荟萃#007
  3. springboot 搭建分布式_爱了!阿里巴巴内部出品“SpringBoot+微服务指南”,理论与实战...
  4. 前后端分离之JWT用户认证
  5. Leetcode Wildcard Matching
  6. 身份验证和授权作为开源解决方案服务
  7. 响应式设计PageAdmin个人博客系统源码v4.0.10
  8. 百度网盘资源搜索网站,搬运+验证
  9. 万恶的流氓首页~~我要干掉你
  10. signature=928c561b85c7b57c8e64bdeb4a18b1f1,专注于Win7系列作品汇总(月版)
  11. 计算机编程入门基础知识(计算机组成原理/操作系统/计算机网络)
  12. ubuntu搜狗拼音输入法无法切换英文
  13. 漫步微积分二十二——微分方程和分离变量法
  14. Java 移除List中的元素,这玩意讲究!
  15. java计算机毕业设计科院垃圾分类系统源码+数据库+系统+lw文档+mybatis+运行部署
  16. 2022考研资料每日更新(2021.05.09)
  17. ffmpeg截取视频片段
  18. 追悼伟大的科学家史蒂芬·霍金,他留下的预言能实现吗 ?
  19. win10环境安装tensorflow-gpu,软件版本、硬件支持、安装过程
  20. Linux 根目录爆满 解决

热门文章

  1. 创建oracle自增序列
  2. mac HBuX连接夜神模拟器,连接真机
  3. 单位根检验urdf_adf单位根检验(单位根检验的基本步骤)
  4. FPGA 主流芯片选型指导和命名规则(一)
  5. 八大排序之堆排序、快速排序、基数排序(java)。
  6. java zh_java 中zhis的用法
  7. 某公司的雇员分为以下若干类
  8. 毕业论文选题方法和论文各部分写作技巧
  9. 计算机类团队名称大全,团队名字大全好听
  10. 中国石油大学《马克思主义基本原理》第二阶段在线作业