读取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)