教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

天富娱乐登录老虎机 双赢棋牌上yb33丶me介绍:JsonPath用法详解

更新时间:2021年05月27日14时36分 来源:传智教育 浏览次数:

好口碑IT培训

JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、PHP和Java。

JSONPath的安装方法如下:

 pip install jsonpath
JSONPath语法和XPATH语法对比 JSON结构清晰,可读性高,复杂度低,非常容易匹配。JSONPath的语法与Xpath类似,如下表所示为JSONPath与XPath语法对比。
XPATH JSONPATH 描述
/ $ 根节点
. @ 现行节点
/ .or[] 取子节点  
.. n/a 取父节点,JSONPath未支持
// .. 不管位置,选择所有符合条件的节点
* * 匹配所有元素节点
@ n/a 根据属性访问,JSON不支持,因为JSON是个key-value递归结构,不需要属性访问
[] [] 迭代器标示(可以在里面做简单的迭代操作,如数组下标、根据内容选值等)
| [,] 支持迭代器中做多选
[] ?() 支持过滤操作
n/a () 分组,JSONPath不支持

下面使用一个JSON文档演示JSONPath的具体使用。JSON 文档的内容如下:

 { "store": { "book":[ { "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 }, { "category": "fiction", "author": "J. R. R. Tolkien", "title": "The Lord of the Rings", "isbn": "0-395-19395-8", "price": 22.99 } ], "bicycle": { "color": "red", "price": 19.95 } } }

假设变量bookJson中已经包含了这段JSON字符串,可通过以下代码反序列化得到JSON对象:

 books=json.loads(bookJson)

(1)查看store下的bicycle的color属性:
 checkurl = "$.store.bicycel.color" print(jsonpath.jsonpath(books, checkurl)) # 输出:['red']

(2)输出book节点中包含的所有对象:

 checkurl = "$.store.book[*]" object_list=jsonpath.jsonpath(books, checkurl) print(object_list)

(3)输出book节点的第一个对象:

 checkurl = "$.store.book[0]" obj = jsonpath.jsonpath(books, checkurl) print(obj) # 输出: ['category': 'reference', 'author': 'Nigel Rees', 'title': 'Sayings of the Century', 'price': 8.95}]

(4)输出book节点中所有对象对应的属性title值:

 checkurl = "$.store.book[*].title" titles = jsonpath.jsonpath(books, checkurl) print(titles) # 输出: ['Sayings of the Century', 'The Lord of the Rings']

(5)输出book节点中category为fiction的所有对象:

 checkurl = "$.store.book[?(@.category=='fiction')]” books=jsonpath.jsonpath(books, checkurl) print(books) # 输出:[{'category': 'fiction', 'author': 'J. R. R. Tolkien', 'title': 'The Lordof the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]

(6)输出book节点中所有价格小于10的对象:

 checkurl="$.store.book[?(@.price<10)]" books = jsonpath.jsonpath(books, checkurl) print(books) # 输出: [{'category': 'reference', 'author': 'Nigel Rees', 'title':'Sayings of the Century', 'price': 8.95}]

(7)输出book节点中所有含有isb的对象:

 checkurl = "$.store.book[?(@.isb)]" books = jsonpath.jsonpath(books,checkurl) print(books) # 输出: [{'category': 'fiction', 'author': 'J. R. R. Tolkien', 'title': 'The Lord of the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}] 


猜你喜欢:

python中for循环的用法

Python os.listdir()方法的用法

Python requests模块是做什么的?

Python中的字典是什么?怎么通过字典查询信息?

传智教育Python+大数据培训课程

0 分享到:
和我们在线交谈!