微慑信息网

python下jsonpath

安装:python -m pip install jsonpath

Json结构清晰,可读性高,复杂度低,非常容易匹配,下表中对应了XPath的用法。

Xpath JSONPath 描述
/ $ 跟节点
. @ 现行节点
/ . or [] 取子节点
.. n/a 就是不管位置,选择所有符合条件的条件
* * 匹配所有元素节点
[] [] 迭代器标示(可以在里面做简单的迭代操作,如数组下标,根据内容选值等)
&#124 [,] 支持迭代器中做多选
[] ?() 支持过滤操作
n/a () 支持表达式计算
() n/a 分组,JsonPath不支持

官网说明:

获取当前json数据中某节点数据:

jsonpath.jsonpath(html,’$..read_count’)

获取根节点下某节点数据:

jsonpath.jsonpath(html,’$.msg’)

获取子节点下第1、2个数据

jsonpath.jsonpath(html,’$.data.post_author.post_list[0:2]’)

按条件筛选节点下数据:

jsonpath.jsonpath(html,’$..data.post_author.post_list[?(@.read_count>10)]’)

 


 

import requests,jsonpath
#. or []    取子节点
#..         不管位置,选择所有符合条件的节点

shop=requests.get(url="").json()
#商店里所有书籍的作者
author_list=jsonpath.jsonpath(shop,'$.store.book[*].author')

#返回所有的作者
author_list2=jsonpath.jsonpath(shop,'$..author')

#商店里的所有东西
category_dx=jsonpath.jsonpath(shop,'$.store.*')

#商店里一切的价格
store_price_list=jsonpath.jsonpath(shop,'$.store..price')

#第三本书
book_3=jsonpath.jsonpath(shop,'$..book[2]')

#最后一本书
book_last=jsonpath.jsonpath(shop,'$..book[-1]')
num=len(jsonpath.jsonpath(shop,'$..book'))-1
book_last=jsonpath.jsonpath(shop,f'$..book[{num}]')  #取值

#前两本书
book_12=jsonpath.jsonpath(shop,f'$..book[0,1]')

#过滤所有便宜10以上的书籍
book_lg10=jsonpath.jsonpath(shop,'$..book[?(@.price<10)]')

#使用isbn number过滤所有书籍
book_lg10=jsonpath.jsonpath(shop,'$..book[?(@.isbn)]')

# !/usr/bin/env python
# -*- coding:utf-8 -*-
 
import json
import jsonpath
import requests
 
url='https://www.lagou.com/lbs/getAllCitySearchLabels.json'
resp=requests.get(url)
city_json=resp.text
 
# json字符串转换为python字典对象
city_dict=json.loads(city_json)
 
# 使用jsonpath匹配
# 获取根节点下的所有name节点的值
names=jsonpath.jsonpath(city_dict,expr='$..name')
print(names)
# 根节点下的message节点的值
message=jsonpath.jsonpath(city_dict,expr='$.message')
print(message)
# D节点下的前3个
D=jsonpath.jsonpath(city_dict,expr='$.content.data.allCitySearchLabels.D[0:3]')
print(D)
# D节点下的第2个和第4个
D=jsonpath.jsonpath(city_dict,expr='$.content.data.allCitySearchLabels.D[1,3]')
print(D)

其他还有jsonpath-rw、jsonpath-ng等

 

 

 

本文标题:python下jsonpath
本文链接:
(转载请附上本文链接)
http://vulsee.com/archives/vulsee_2021/0129_13772.html
转载请附本站链接,未经允许不得转载,,谢谢:微慑信息网-VulSee.com » python下jsonpath
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

微慑信息网 专注工匠精神

访问我们联系我们