JsonPath 解析Josn字符串
本文仅是测试验证使用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字符串相关推荐
- Java整合Jsonpath解析Json字符串
JsonPath是一种简单的方法来提取给定JSON文档的部分内容 引入依赖 <dependency><groupId>com.jayway.jsonpath</group ...
- C#解析JSON字符串总结
C#解析JSON字符串总结 JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2 ...
- c#解析json字符串处理清晰易懂的方法
JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...
- java json path_Java使用JSONPath解析JSON完整内容详解
JsonPath是一种简单的方法来提取给定JSON文档的部分内容. JsonPath有许多编程语言,如Javascript,Python和PHP,Java. JsonPath提供的json解析非常强大 ...
- c#解析json字符串数组_C#解析JSON字符串总结
JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...
- 小案例Josn字符串的生成
零.前言 1).写了一个安卓的在线播放各个电视台的小demo,放在手机和电视上都能看,但资源写在string.xml里感觉挺low 2).还是转成json吧,维护起来方便些,或放在服务端也挺好,一个一 ...
- c语言解析xml字符串_Python XML解析
Python XML解析 什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是 ...
- java 解析二进制_java实现解析二进制文件(字符串、图片)
1.需求说明,实现细节要求: 解析二进制文件 files\case10\binary,其中包含一个字符串和一张图片,数据文件格式为字符串数据长度(2字节)+字符串内容+图片数据长度(4字节)+图片数据 ...
- oracle无法解析连接符,oracle无法解析连接字符串,请教
oracle无法解析连接字符串,请教 C# code: string StrConnection = "Server=127.0.0.1;Data Source=kagami;User ID ...
- 框架选修课之dom4j解析xml字符串实例
DOM4J 与利用DOM.SAX.JAXP机制来解析xml相比,DOM4J 表现更优秀,具有性能优异.功能强大和极端易用使用的特点,只要懂得DOM基本概念,就可以通过dom4j的api文档来解析xml ...
最新文章
- python import 与from import主要区别,前者导入所有,后者导入指定方法 变量
- 极客Web前端开发资源大荟萃#007
- springboot 搭建分布式_爱了!阿里巴巴内部出品“SpringBoot+微服务指南”,理论与实战...
- 前后端分离之JWT用户认证
- Leetcode Wildcard Matching
- 身份验证和授权作为开源解决方案服务
- 响应式设计PageAdmin个人博客系统源码v4.0.10
- 百度网盘资源搜索网站,搬运+验证
- 万恶的流氓首页~~我要干掉你
- signature=928c561b85c7b57c8e64bdeb4a18b1f1,专注于Win7系列作品汇总(月版)
- 计算机编程入门基础知识(计算机组成原理/操作系统/计算机网络)
- ubuntu搜狗拼音输入法无法切换英文
- 漫步微积分二十二——微分方程和分离变量法
- Java 移除List中的元素,这玩意讲究!
- java计算机毕业设计科院垃圾分类系统源码+数据库+系统+lw文档+mybatis+运行部署
- 2022考研资料每日更新(2021.05.09)
- ffmpeg截取视频片段
- 追悼伟大的科学家史蒂芬·霍金,他留下的预言能实现吗 ?
- win10环境安装tensorflow-gpu,软件版本、硬件支持、安装过程
- Linux 根目录爆满 解决