jsonpath 语法介绍

news2024/12/26 23:18:11

文章目录

  • 前言

  • 一、对jsonpath的理解

  • 二、补充

  • 三、哪里可以用的到呢?

  • 总结


前言

在使用Python做接口测试中需要获取json中的字段值,因此需要使用jsonpath里面的提取规则,所以特意学习了jsonpath中的语法。


一、对jsonpath的理解

在线运行地址:JSONPath Online EvaluatorAn online playground for JSONPathhttp://jsonpath.com/

下面有示例的json字符串

(1)解释 . 和 $ 字符

$.store.book  解释:$ 表示根节点,. 表示根节点下。(这个总体意思是:根节点下的store节点下的book节点)

2)解释 ..字符:表示:递归匹配所有子元素,然而获取所有符合条件的内容(这个条件是跟在 ..后面)

$.store..price  解释:总体意思是:根节点下的store节点下的所有的子节点的price节点

(3)解释:[ ]字符:表示索引的取值

$.store.book[2] 解释:根节点下的store节点下的book节点中的第二个数据块

(4)解释:* 字符:表示:通配符,匹配下级节点(注意:这个的节点是指有键值对的节点,不是外层取名字的节点)

$.store.* 解释:根节点下的store节点下的book节点下的所有节点

(5)解释:@ 字符:表示:当前元素下(节点下),相当于一种限定

()字符:表示:里面写脚本表达式(也就是函数)

 $..book[(@.length-1)] 解释:根节点下的book节点下的第四个节点(倒数第一个)。

[]里面放置索引,@表示:当前book这个元素,.表示这个元素下。length是一个函数,统计这个book元素下的个数。length-1:因为索引的取值是从0开始。

 

(6)解释:?() 字符:表示:过滤操作(过滤表达式)

 过滤表达式,经常与@符号搭配使用

 $..book[?(@.price<10)]  解释:根节点下的所有节点中的book节点,在book节点下过滤筛选出,在@限定下的当前节点中price<10的节点的数据

再次解释:@ . :表示限定当前节点;在此例子配置中表示:限定当前book节点

 二补充

 这是一个非常经典的案例,你几乎可以在任何介绍JSON Path的地方看到它,但是很实用。

{ "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
    }
  }
}

参考优秀的博主:JSON Path 语法介绍和使用场景_小雨青年的博客-CSDN博客

参考一些博主:nulljMESPATH是一种用于查询和操作JSON文本数据的语言和库。它的语法和操作类似于XPath和SQL,但是专门用于JSON格式的数据,可以从JSON文档中提取和转换元素。它支持过滤、投影、排序等操作,类似于SQL语言。完全规范JMESPath语言以ABNF语法和完整规范描述。这确保了语言语法的精确定义。兼容性测试JMESPath有一整套数据驱动的测试用例。这样可以确保多个库的功能相同,使开发人员能够在他们选择的语言中实现 JMESPath 。多语言库每个JMESPath库都通过了一整套符合性测https://blog.csdn.net/zhouruifu2015/article/details/130056912?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_utm_term~default-4-130056912-blog-123276600.235^v36^pc_relevant_default_base3&spm=1001.2101.3001.4242.3&utm_relevant_index=5

DN博客JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、PHP和Java。JSONPath的安装方法如下:pip install jsonpathJSONPath语法和XPATH语法对比 JSON结构清晰,可读性高,复杂度低,非常容易匹配。JSONPath的语法与Xpath类似,如下表所示为JSONPath与XPath语法对比。下面使用一个JSON文档演示JSONPath的具体使用。JSON 文档的内容如下:{ https://blog.csdn.net/fallenjency/article/details/123276600?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168446023916800188547535%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=168446023916800188547535&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-123276600-null-null.142^v87^control_2,239^v2^insert_chatgpt&utm_term=jsonpath%E8%AF%AD%E6%B3%95&spm=1018.2226.3001.4187

三、哪里可以用的到呢?


光有语法可操作意义不大,那么哪里可以用到JSON Path呢?

1. Java
Jayway JsonPath ,用于读取 JSON 文档的 Java DSL。

项目地址: https://github.com/json-path/JsonPath

2. PHP
JsonPath,JsonPath的PHP实现。

项目地址: https://github.com/Galbar/JsonPath-PHP

3. JavaScript
jsonpath, 使用 JSONPath 表达式查询 JavaScript 对象。 用于 Node.js 的强大/安全的 JSONPath 引擎。

项目地址: https://github.com/dchester/jsonpath

4. Python
jsonpath-ng,旨在符合标准的 Python JSONPath 的最终实现,包括算术和二进制比较运算符,并为元编程提供清晰的 AST。

项目地址:https://pypi.org/project/jsonpath-ng/

5. Go
Jsonpath,JsonPath的PHP实现。

项目地址:https://github.com/yalp/jsonpath
 


四、总结

JSON Path 作为一个语法标准,实现了对JSON的便捷读取。另外,各种语言的JSON Path实现的项目名称都差不多。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/544784.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ZigBee案例笔记 - 定时器

文章目录 1.片内外设I/O2.定时器简介3.定时器1寄存器4.定时器1操作自由运行模式模模式正计数/倒计数模式 5.16位计数器定时器1控制LED 示例 6.定时器3概述自由运行模式倒计数模式模模式正/倒计数模式 7.定时器3寄存器定时器3控制LED闪烁 1.片内外设I/O 定时器这样的片内外设也…

微信小程序原生开发功能合集十五:个人主页功能实现

本章个人主页功能实现,展示当前登录用户信息、个人主页、修改密码、浏览记录、我的收藏、常见问题、意见反馈、关于我们等界面及对应功能实现。   另外还提供小程序开发基础知识讲解课程,包括小程序开发基础知识、组件封装、常用接口组件使用及常用功能实现等内容,具体如…

django ORM框架 第四章 聚合函数

上一章&#xff1a;django ORM框架 第三章 关联表的数据创建与查询_做测试的喵酱的博客-CSDN博客 一、聚合函数类型&#xff1a; from django.db.models import Q, Count, Avg, Max, Min 班级表&#xff1a; 学生信息表&#xff1a; 1.1 Count 模版&#xff1a; QuerySet.…

如何将m4a音频转换mp3格式,5种简单方法帮你处理

如何将m4a音频转换mp3格式&#xff1f;这个问题想必在工作生活中经常遇到吧。为什么要将m4a音频转换mp3格式呢&#xff1f;首先&#xff0c;M4A是一种较新的高质量音频文件格式&#xff0c;通常用于存储高保真度的音频文件&#xff0c;例如音乐录音室的原始录制。但是&#xff…

基于C#制作一个ChatGPT桌面助手

基于C#制作一个ChatGPT桌面助手&#xff0c;在工作或者学习时提升自己的效率&#xff0c;工欲善其事&#xff0c;必先利其器。 一、前言1.1、什么是ChatGPT1.2、ChatGPT官网及key申请 二、后台项目2.1、项目创建2.2、界面设置2.3、获取版本2.4、发送信息 一、前言 1.1、什么是…

深度学习实战31-开发基于机器学习的在线图像识别工具

大家好,我是微学AI,今天给大家讲一下深度学习实战31-开发基于机器学习的在线图像识别工具,本文开发一个基于机器学习的在线图像识别工具,用户可以上传一张图片,并得到对应的标签或分类信息。该工具应该支持多种图像类型,例如自然风景、动物、物品等,并且在处理复杂图像时…

面向移动机器人的道路环境感知

分享嘉宾 | 范睿 文稿整理 | William 自动驾驶感知 首先&#xff0c;三维几何模型背后的机理是多视图几何学&#xff0c;多视图几何学是指想要得到对应模型的三维几何架构&#xff0c;则必须要用相机在两个不同的位置进行拍照。如图1&#xff0c;可以通过利用两个相机在不同位…

【HarmonyOS】【JS】小白的鸿蒙学习之路2--小小的图片啊,动呀动起来

【关键字】 image组件、动画 【介绍】 今天和大家分享下&#xff0c;我在官网上学习的一篇Codelab。这篇帖子通过一个代码示例&#xff0c;实现image组件的平移、缩放、旋转和透明度变化效果。话不多说&#xff0c;我们一起学起来吧&#xff01; 【成果展示】 【开发步骤】 …

FE_VUE路由 细致解读router/index.js的配置

1 安装vue-router插件 安装vue-router&#xff0c;命令&#xff1a;npm i vue-router 【npm i vue-router3】&#xff0c;在main.js 中引入路由文件&#xff1a; import router from ./router&#xff0c; 注意router 不要变且为小写&#xff1b;注册路由&#xff08;因为main…

商场室内地图导航如何实现?商场室内导航地图怎么做?

商场室内地图导航如何实现&#xff1f;现在&#xff0c;消费者的消费观念和消费心理日趋成熟&#xff0c;对于购物商场的要求也愈加挑剔。电子地图作为大家最喜闻乐见的高效应用形式&#xff0c;能够在顾客购物的过程中带来非常大的帮助和体验&#xff0c;对于在大型的综合商场…

抖音电商的新增量在哪里?

“抖音电商涨不动了&#xff0c;才提出做货架”&#xff0c;“抖音做不好货架”……去年&#xff0c;抖音电商提出做“全域兴趣电商”&#xff0c;当时业内外有鼓励&#xff0c;也有不看好的声音。一年过去&#xff0c;5月16日&#xff0c;抖音电商总裁魏雯雯回应了质疑&#x…

Python可视化工具分享

今天和大家分享几个实用的纯python构建可视化界面服务&#xff0c;比如日常写了脚本但是不希望给别人代码&#xff0c;可以利用这些包快速构建好看的界面作为服务提供他人使用。有关于库的最新更新时间和当前star数量。 1、 streamlit (23.3k Updated 2 hours ago) Streamlit…

看完这篇文章你就彻底懂啦{保姆级讲解}-----(I.MX6U驱动GPT定时器中断实现高精度延时) 2023.5.19

目录 前言整体文件结构源码分析&#xff08;保姆级讲解&#xff09;初始化延时函数部分&#xff1a;微秒(us)级延时部分毫秒(ms)级延时部分主函数main部分 编译下载结束语 前言 在上一讲过程中我们使用了EPIT定时器来实现了定时器中断&#xff0c;从而解决了按键消抖的问题。但…

ChatGPT与深度学习的完美融合:打造智能化推荐系统新时代

PNN | AutoRec | 推荐算法 NFM | ChatGPT | 深度学习 新技术如ChatGPT、LLM、AIGC等的兴起&#xff0c;使推荐系统拥有更强的学习和预测能力。然而&#xff0c;推荐算法仍然是深度学习推荐系统中不可或缺的关键技术。推荐算法和这些技术应相辅相成&#xff0c;相互补充。推荐…

五大向量数据库入门横评

本文内容节选自 Paxi.ai 文章分享&#xff0c;Paxi.ai是一个基于GPT-4打造的帮助用户快速使用AI的AI工具&#xff0c;对内容感兴趣的朋友可以上他们官网查看。 从OpenAI发布GPT以来&#xff0c;AI尤其以LLM为代表的项目发展迅速&#xff0c;相信大家已经了解到大语言模型的魅力…

apk 作为资源提供 aar 的过程

1&#xff1a;参考&#xff1a;Android将APK项目封装为SDK(AAR) https://blog.csdn.net/weixin_51522235/article/details/128216091 四大点&#xff1a;1: apply plugin:com.android.library 2:去掉&#xff1a;applicationId 3:去掉&#xff1a;applicationVariants.all…

MySQL:触发器、权限管理

一、学习目标 了解什么是触发器掌握创建触发器的方法掌握查看触发器的方法掌握触发器的使用技巧掌握删除触发器的方法熟练掌握使用触发器的方法和技巧了解什么是权限表掌握权限表的用法掌握账户管理的方法掌握权限管理的方法掌握访问控制的方法熟练掌握新建用户的方法和技巧了…

小程序加weui或者TDesign安装

WeUI样式库展示&#xff1a;https://weui.io/ 微信官方WeUI相关文档&#xff1a;https://wechat-miniprogram.github.io/weui/docs/ WeUI-wxss 项目地址&#xff1a;https://github.com/Tencent/weui-wxss 安装 &#xff0c;1.先安装node.js 2.建立或者打开已经有的项目。…

【SolVES 模型】生态系统服务功能社会价值评估(基于多源环境QGIS、PostgreSQL、ArcGIS、Maxent、R语言)

SolVES模型&#xff08;Social Values for Ecosystem Services&#xff09;全称为生态系统服务社会价值模型&#xff0c;是由美国地质勘探局和美国科罗拉多州立大学联合开发的一款地理信息系统应用程序&#xff0c;开发该模型的目的主要是对生态系统服务功能中的社会价值进行空…

敏捷与瀑布:哪种项目管理方法适合你的企业?

​良好的项目管理可以改变企业的工作流&#xff0c;在减少混乱因素的同时注入方向和组织性。 同时&#xff0c;"项目管理 "对每个人来说并不意味着完全相同的事情。在企业及其客户中&#xff0c;最重要的两种项目管理方法是敏捷和瀑布。而这两种风格之间的差异很大&…