Python json解析库jsonpath原理及使用示例

作者:-零 时间:2022-05-18 09:43:00 

jsonpath

jsonpath 用于多层嵌套 json格式的 解析。

pip install jsonpath

JsonPath描述
$根节点
@现行节点
.or[]取子节点
n/a取父节点,jsonpath为支持
..就是不管位置,选择所有复合条件的条件
*匹配所有元素节点
n/a根据属性访问,json不支持,因为json是个key-value递归结构,不需要数属性访问
[]迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等)
[,]支持迭代器中做多选
?()支持过滤操作
()支持表达式计算
n/a分组,JsonPath不支持

jsonpath使用示例


book_dict = {
"store": {
 "book": [
  { "category": "reference",
   "author": "Nigel Rees",
   "title": "Sayings of the Century",
   "price": 8.95
  },
  { "category": "fiction",
   "author": "Evelyn Waugh",
   "title": "Sword of Honour",
   "price": 12.99
  },
  { "category": "fiction",
   "author": "Herman Melville",
   "title": "Moby Dick",
   "isbn": "0-553-21311-3",
   "price": 8.99
  },
  { "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
 }
}
}

JsonPathResult
$.store.book[*].authorstore中的所有的book作者
$…author所有的作者
$.store.*store下的所有元素
$.store…pricestore中的所有价钱
$…book[2]第三本书
$…book[(@.length-1)]最后一本书
$…book[0,1]取前两本书
$…book[?(@.isbn)]获取有jsbn的所有数
$…book[?(@.price<10)]获取价格大于10
$…*匹配所有数据

使用示例

$ 是查找的根节点,传参数是python的dict 类型,当查找到的时候返回一个list结果,查找失败的时候返回 False.


import jsonpath

result = {
 "code": 0,
 "data": [
   {
     "age": 20,
     "create_time": "2019-09-15",
     "id": 1,
     "mail": "283340479@qq.com",
     "name": "yoyo",
     "sex": "M"
   },
   {
     "age": 21,
     "create_time": "2019-09-16",
     "id": 2,
     "mail": "123445@qq.com",
     "name": "yoyo111",
     "sex": "M"
   }
 ],
 "msg": "success!"
}

msg = jsonpath.jsonpath(result, '$.msg')
print(msg)  # 输出结果 ['success!']
names = jsonpath.jsonpath(result, '$..name')
print(names)  # 输出结果 ['yoyo', 'yoyo111']
no = jsonpath.jsonpath(result, '$..yoyo')
print(no)  # 找不到是结果是 False

来源:https://www.cnblogs.com/-wenli/p/13993887.html

标签:Python,json,解析库,jsonpath
0
投稿

猜你喜欢

  • ACCESS中Field对象的标题属性

    2008-11-20 17:44:00
  • 基于Python实现五子棋-(人机对战)

    2022-07-04 06:23:48
  • Python实现动态二维码生成的示例代码

    2022-08-03 15:45:39
  • 用Python在Excel里画出蒙娜丽莎的方法示例

    2023-12-18 02:59:21
  • Python splitlines使用技巧

    2023-01-11 01:13:56
  • python 工具 字符串转numpy浮点数组的实现

    2023-07-15 20:37:16
  • python通过pil模块将raw图片转换成png图片的方法

    2021-08-25 00:37:31
  • Jupyter notebook在mac:linux上的配置和远程访问的方法

    2023-06-20 06:11:01
  • Python extract及contains方法代码实例

    2021-03-29 07:51:25
  • 深入理解python多进程编程

    2023-03-20 09:07:20
  • pytorch教程网络和损失函数的可视化代码示例

    2023-11-26 16:13:51
  • 解析一个通过添加本地分区索引提高SQL性能的案例

    2023-07-22 13:29:32
  • python中yield的用法详解——最简单,最清晰的解释

    2021-10-22 21:27:56
  • Python函数嵌套实例

    2022-11-11 06:43:34
  • Go中函数的使用细节与注意事项详解

    2023-10-15 01:02:32
  • python实现矩阵和array数组之间的转换

    2022-03-19 16:31:21
  • PyCharm 2021.2 (Professional)调试远程服务器程序的操作技巧

    2023-08-23 20:48:17
  • 初窥交互设计

    2009-10-10 10:52:00
  • Python使用PyCrypto实现AES加密功能示例

    2022-09-18 13:23:57
  • pyCaret效率倍增开源低代码的python机器学习工具

    2021-01-09 10:30:26
  • asp之家 网络编程 m.aspxhome.com