当前位置: 首页 > article >正文

【基础】jsonpath

https://jsonpath.com/

背景:
处理多层嵌套,比较复杂,这时候某个json字段吸比较麻烦,此时,吸使用jsonpath来处理这类工作场景。

在这里插入图片描述
安装

pip install jsonpath
import jsonpath

relation = [
    {'id': 1, 'label': 'a1', 'children': [], "age": 20},
    {'id': 2, 'label': 'a2', 'children': [{'id': 3, 'label': 'a3',
                                           'children': [
                                               {'id': 4, 'label': 'a4', 'children': []},
                                               {'id': 5, 'label': 'a5',
                                                'children': [
                                                    {'id': 7, 'label': 'a7', 'children': []},
                                                    {'id': 8, 'label': 'a8',
                                                     'children': []}]}]},
                                          {'id': 6, 'label': 'a6', 'children': []}]}]

# 嵌套n层也能取到所有标签信息,$表示最外层的{},..表示模糊匹配
# 查找顺序,第一个 > 第一个的子节点,直到没有。
res1 = jsonpath.jsonpath(relation, '$..label')  # ['a1', 'a2', 'a3', 'a4', 'a5', 'a7', 'a8', 'a6']
res2 = jsonpath.jsonpath(relation, '$..id')  # [1, 2, 3, 4, 5, 7, 8, 6]
res3 = jsonpath.jsonpath(relation, '*.id')  # [1, 2]  匹配所有元素节点
print(res1)
print(res2)
print(res3)

# 如果不存在匹配的结果,则返回 False
res4 = jsonpath.jsonpath(relation, '$..name')
print(res4)

# 如果只匹配出单个结果,依然会放入一个列表
res5 = jsonpath.jsonpath(relation, '$..age')  # [20]
print(res5)

# 取某个数据的原始方法:通过查找字典中的key以及list方法中的下标索引
res6 = relation[1]["children"][0]["children"][1]["label"]
print(res6)  # a5

http://www.kler.cn/a/414900.html

相关文章:

  • Docker化部署Flask:轻量级Web应用的快速部署方案
  • 【论文阅读】 Learning to Upsample by Learning to Sample
  • 【数据仓库 | Data Warehouse】数据仓库的四大特性
  • Unity ShaderLab 实现网格爆炸
  • [Unity] 【游戏开发】角色设计3-如何为角色实现响应输入的控制器
  • AI 大模型如何重塑软件开发:未来的智能化变革
  • 【iOS】知乎日报总结
  • RSTP与MSTP实验
  • 裸金属服务器和专属主机的区别是什么?
  • Android so库的编译
  • 快速排序hoare版本和挖坑法(代码注释版)
  • IPVS与Keepalived
  • 【模电】整流稳压电源
  • Springboot 读取 resource 目录下的Excel文件并下载
  • 【innodb阅读笔记】之 表空间文件、重做日志文件
  • 网络安全拟态防御技术
  • 【计算机网络安全】信息收集扫描
  • 【分享】PPT打开密码的设置与移除方法
  • Neo4j图形数据库-Cypher中常用指令
  • Spring Security6 OAuth2 实现流程
  • Oracle, PostgreSQL 字符串排序不一致及调整
  • docker 僵尸进程问题
  • 构建 LLM (大型语言模型)应用程序——从入门到精通(第七部分:开源 RAG)
  • 使用 Go 语言封装 MinIO 相关操作
  • 40分钟学 Go 语言高并发:Pipeline模式(二)
  • 网络安全-AAA介绍与配置