jsonpath语法的基本使用
读取json数据
jsonpath语法元素和对应XPath元素的对比。
XPath | josnPath | Description |
/ | $ | 表示根元素 |
. | @ | 当前元素 |
/ | . or [] | 子元素 |
.. | n/a | 父元素 |
// | .. | 递归下降,JSONPath是从E4X借鉴的。 |
* | * | 通配符,表示所有的元素 |
@ | n/a | 属性访问字符 |
[] | [] |
子元素操作符
|
| | [,] |
连接操作符在XPath 结果合并其它结点集合。JSONP允许name或者数组索引。
|
n/a | [start:end:step] |
数组分割操作从ES4借鉴。
|
[] | ?() |
应用过滤表示式
|
n/a | () |
脚本表达式,使用在脚本引擎下面。
|
() | n/a | Xpath分组 |
- { "store": {
- "book": [
- { "category": "修真",
- "author": "六道",
- "title": "坏蛋是怎样练成的",
- "price": 8.95
- },
- { "category": "修真",
- "author": "天蚕土豆",
- "title": "斗破苍穹",
- "price": 12.99
- },
- { "category": "修真",
- "author": "唐家三少",
- "title": "斗罗大陆",
- "isbn": "0-553-21311-3",
- "price": 8.99
- },
- { "category": "修真",
- "author": "南派三叔",
- "title": "星辰变",
- "isbn": "0-395-19395-8",
- "price": 22.99
- }
- ],
- "bicycle": {
- "author": "老马",
- "color": "黑色",
- "price": 19.95
- }
- }
- }
XPath | JSONPath | 结果 |
/store/book/author |
$.store.book[*].author |
书点所有书的作者
|
//author |
$..author |
所有的作者
|
/store/* |
$.store.* |
store的所有元素。所有的bookst和bicycle
|
/store//price |
$.store..price |
store里面所有东西的price
|
//book[3] |
$..book[2] |
第三个书
|
//book[last()] |
$..book[(@.length-1)] |
最后一本书 |
//book[position()<3] |
$..book[0,1]
$..book[:2] |
前面的两本书。 |
//book[isbn] |
$..book[?(@.isbn)] |
过滤出所有的包含isbn的书。 |
//book[price<10] |
$..book[?(@.price<10)] |
过滤出价格低于10的书。 |
//* |
$..* |
所有元素。
|
# _*_ coding : utf-8 _*_- # @Time : 2021/11/5 15:15
- # @Author : 秋泊酱
- # @File : jsonpath 语法的使用
- import json
- import jsonpath
- # 读取json文件
- obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
- # 参数;json对象,书店.所有书的.作者
- author_list = jsonpath.jsonpath(obj,'$.store.book[*].author')
- print(author_list)
通过下标获取,第1本书名 jsonpath.jsonpath(obj,'$.store.book[0].author')
- # _*_ coding : utf-8 _*_
- # @Time : 2021/11/5 15:15
- # @Author : 秋泊酱
- # @File : jsonpath 语法的使用
- import json
- import jsonpath
- # 读取json文件
- obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
- # 所有的作者
- author_list = jsonpath.jsonpath(obj,'$..author')
- print(author_list)
- # _*_ coding : utf-8 _*_
- # @Time : 2021/11/5 15:15
- # @Author : 秋泊酱
- # @File : jsonpath 语法的使用
- import json
- import jsonpath
- # 读取json文件
- obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
- # store下面的所有的元素
- tag_list = jsonpath.jsonpath(obj,'$.store.*')
- print(tag_list)
- # _*_ coding : utf-8 _*_
- # @Time : 2021/11/5 15:15
- # @Author : 秋泊酱
- # @File : jsonpath 语法的使用
- import json
- import jsonpath
- # 读取json文件
- obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
- # store里面所有东西的price钱
- price_list = jsonpath.jsonpath(obj,'$.store..price')
- print(price_list)
- # _*_ coding : utf-8 _*_
- # @Time : 2021/11/5 15:15
- # @Author : 秋泊酱
- # @File : jsonpath 语法的使用
- import json
- import jsonpath
- # 读取json文件
- obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
- # 第三个书,所有信息
- book = jsonpath.jsonpath(obj,'$..book[2]')
- print(book)
- # _*_ coding : utf-8 _*_
- # @Time : 2021/11/5 15:15
- # @Author : 秋泊酱
- # @File : jsonpath 语法的使用
- import json
- import jsonpath
- # 读取json文件
- obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
- # 最后一本书(最后一本书下标,长度-1)
- book = jsonpath.jsonpath(obj,'$..book[(@.length-1)]')
- print(book)
- # _*_ coding : utf-8 _*_
- # @Time : 2021/11/5 15:15
- # @Author : 秋泊酱
- # @File : jsonpath 语法的使用
- import json
- import jsonpath
- # 读取json文件
- obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
- # 前面的两本书
- # book_list = jsonpath.jsonpath(obj,'$..book[0,1]')
- book_list = jsonpath.jsonpath(obj,'$..book[:2]')
- print(book_list)
- # _*_ coding : utf-8 _*_
- # @Time : 2021/11/5 15:15
- # @Author : 秋泊酱
- # @File : jsonpath 语法的使用
- import json
- import jsonpath
- # 读取json文件
- obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
- # 条件过滤需要在()的前面添加一个?
- # 过滤出所有的包含isbn的书。
- book_list = jsonpath.jsonpath(obj,'$..book[?(@.isbn)]')
- print(book_list)
- # _*_ coding : utf-8 _*_
- # @Time : 2021/11/5 15:15
- # @Author : 秋泊酱
- # @File : jsonpath 语法的使用
- import json
- import jsonpath
- # 读取json文件
- obj = json.load(open('jsonpath.json', 'r', encoding='utf-8'))
- # 哪本书超过了10块钱
- book_list = jsonpath.jsonpath(obj,'$..book[?(@.price>10)]')
- print(book_list)
jsonpath语法的基本使用的更多相关文章
- JsonPath 语法 与 XPath 对比
JsonPath 语法 与 XPath 对比 XPath JSONPath Description / $ the root object/element . @ the current obje ...
- [SoapUI] JsonPath 语法 与 XPath 对比
XPath JSONPath Description / $ the root object/element . @ the current object/element / . or [] chil ...
- jsonpath
1. java 类库 jayway/JsonPath maven 使用方法 <dependency> <groupId>com.jayway.jsonpath</grou ...
- jsonpath 使用教程(快速处理dict的深度查询)
一 简介 JSONPath - 用于JSON的XPath 用来解析多层嵌套的json数据;JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具. 二 安装 安装方法:pip in ...
- Python_json数据检索与定位之jsonPath类库
json数据检索与定位之jsonPath类库 by:授客 QQ:1033553122 实践环境 win7 64 Python 3.4.0 jsonpath_ng-1.4.3-py2.py3-non ...
- Jsonpath的基本使用
JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一. 如果可以使用xpath来解析js ...
- Jsonpath的写法
JSONPath - 是xpath在json的应用. xml最大的优点就有大量的工具可以分析,转换,和选择性的提取文档中的数据.XPath是这些最强大的工具之一. 如果可以使用xpath来解析js ...
- kubectl技巧之通过jsonpath截取属性
系列目录 前面一节我们介绍了使用go-template截取属性,go-template功能非常强大,可以定义变量,使用流程控制等,这是jsonpath所不具备的.然而,jsonpth使用的时候更为灵活 ...
- JSONPath入门之Snack3篇
Snack3 for java 一个微型JSON框架 基于jdk8,60kb.有序列化反序列化.解析和转换.支持 Json path 查询. <dependency> <groupI ...
随机推荐
- 解决springboot 配置文件未映射静态资源文件 导致shiro拦截静态资源的问题
---------------------------------------------------------------------------------------------------- ...
- Redis的一些常用命令
查看所有键 keys * 首先先向数据库中插入一些键值对 演示keys *命令 keys *查询所有键的方式是遍历数据库中的键,其时间复杂度为O(n),如果数据库的数量一旦过大,其效率就大大降低,因此 ...
- Java 将Word转为HTML的方法
本文介绍如何在JAVA程序中将Word文档通过 Document.saveToFile() 方法转换为HTML文档.编辑代码前,参考如下环境配置,导入jar包. [程序环境] 1. IntelliJ ...
- react之组件数据挂在方式
1.属性(props) 组件间传值,在React中是通过只读属性 props 来完成数据传递的. props:接受任意的入参,并返回用于描述页面展示内容的 React 元素. import React ...
- Jenkins REST API 实例
背景: Jenkins具有丰富的插件生态,足以满足我们日常工作的需求,但如果我们想通过具体的Jenkins任务直接对外提供服务,而不想将内部的具体实现对外暴露(否则,需添加对应的用户权限,通过页 ...
- js 判断一个变量是否有值
最近遇到一个面试题,判断一个变量是否有值,当时有点蒙,其实很简单,就是判断 变量是否为 undefined或者null function isFlag(val) { if(Object.prototy ...
- kvm安装window系统及使用NFS动态迁移
验证是否开启虚拟化 # grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD processor ...
- Vim合并行
日常常用到多行合并的功能,记录如下: 第一种, 多行合并成一行,即: AAAAABBBBBCCCCC 合并为:AAAAA BBBBB CCCCC 方法1: normal状态下 3J 其中的3是范围,可 ...
- kiyv Button参数属性
from kivy.uix.button import Button from kivy.uix.floatlayout import FloatLayout from kivy.app import ...
- 利用DMA实现采样数据的直接搬运存储
尝试了下STM32的ADC采样,并利用DMA实现采样数据的直接搬运存储,这样就不用CPU去参与操作了. 找了不少例子参考,ADC和DMA的设置了解了个大概,并直接利用开发板来做一些实验来验证相关的操作 ...