jsonpath
JsonPath 是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括:Javascript, Python, PHP 和 Java。
官方文档:http://goessner.net/articles/JsonPath
JSONPath 描述
$ 根节点
@ 现行节点
.or[] 取子节点
.. 就是不管位置,选择所有符合条件的条件
- 匹配所有元素节点
[] 迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等)
[,] 支持迭代器中做多选。
?() 支持过滤操作.
() 支持表达式计算
根据要求获取下面数据中的内容
1.将字符串转换成 python可操作性的数据类型
dic = json.loads(strs)
print(dic,type(dic))
2.实例化jsonpath对象 获取根路径下的所有的数据
json_obj = jsonpath.jsonpath(dic,’$..*’)
获取根节点下的store的所有数据
json_obj = jsonpath.jsonpath(dic,’$.store’)
1.获取所有书籍的作者
json_obj = jsonpath.jsonpath(dic,’$..author’)
获取第二本书的详细信息 []里写的是索引值
json_obj = jsonpath.jsonpath(dic,’$..book[1]’)
获取第二本书和第三本书的详细信息
json_obj = jsonpath.jsonpath(dic,’$..book[1,3]’)
获取前两本书
json_obj = jsonpath.jsonpath(dic,’$..book[:2]’)
获取后两本书
json_obj = jsonpath.jsonpath(dic,’$..book[-2:]’)
获取所有的book信息
json_obj = jsonpath.jsonpath(dic,’$..book’)
获取价格大于10的数据
json_obj = jsonpath.jsonpath(dic,’$..book[?(@.price>10)]’)
找价格等于22.99的书籍 是否相等 ==
json_obj = jsonpath.jsonpath(dic,’$..book[?(@.price==22.99)]’)
找有书号的书籍信息
json_obj = jsonpath.jsonpath(dic,’$..book[?(@.isbn)]’)
查看所有书籍的价格
json_obj = jsonpath.jsonpath(dic,’$..book..price’)
取个 价格 >8 并且小于20 的 书看下
json_obj = jsonpath.jsonpath(dic,’$..book[?(@.price<20 && @.price>8.99)]’)
$..book[?(8<@.price<20)
json_obj = jsonpath.jsonpath(dic,’$..book[?(8<@.price<20)]’)
print(json_obj)20>