返回顶部
首页 > 资讯 > 后端开发 > Python >python-json校验-jsonpath解析
  • 221
分享到

python-json校验-jsonpath解析

pythonjson校验pythonjson校验jsonpathpythonjson 2022-11-21 22:11:02 221人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录背景表示法JSONpath的语法示例实战背景 在进行接口自动化测试的时候,对响应结果进行校验,基本上都是对json数据的校验,响应内容十分复杂,当然验证也是一个很庞大的工程 ,不

背景

在进行接口自动化测试的时候,对响应结果进行校验,基本上都是对json数据的校验,响应内容十分复杂,当然验证也是一个很庞大的工程 ,不过都是可以通过jsonpath 解决。

JSONPath 提供了强大的 JSON 解析功能,可以更便捷灵活的用来获取对应的 JSON 内容。

表示法

JSONPath 有两种表示方式, 可以使用点表示法,也可以使用括号表示法

  • 点表示法 例子:$.store.book[0].title
  • 括号表示法 例子:$['store']['book'][0]['title']

官方帮助文档

jsonpath的语法

语法描述
$根对象/元素
@当前对象/元素
. 或者 []子运算符,匹配下级元素
..递归下降,递归方式匹配所有子元素
*通配符。所有对象/元素,无论其名称
[]下标运算符,jsonpath 从0开始
[,]连接的操作符,多个结果拼接成列表返回
[开始:结束:步骤]从 ES4 借来的数组切片运算符。
?()应用过滤器(脚本)表达式。
()脚本表达式,使用底层脚本引擎。

示例

{ "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
    }
  }
}
jsonpath结果备注
$.store.book[*].author所有书籍的作者
$..author所有的作者
$.store.*商店下的所有元素/对象,包括书籍和自行车
$.store..price商店里所有元素/对象的价格
$..book[2]下标从0开始,第3本书
$..book[(@.length-1)]按顺序排列最后一本书用到了()和@两个语法
$..book[-1:]按顺序排列最后一本书用到了[]数组下标切片
$..book[0,1]第1本书和第2本书,前两本书
$..book[:2]第1本书和第2本书,前两本书$…book[0:2] ,从0开始,0 1,前两本书
$..book[?(@.isbn)]有isbn字段的所有书籍
$..book[?(@.price<10)]所有价格小于10的书籍
$..*json结构的所有元素

实战

安装jsonpath

pip3 install jsonpath

以网上一个开源的获得天气的api为例子:

def test_get_json(self):
        r = requests.get("Http://t.weather.sojson.com/api/weather/city/101191102")
        print(r.text)
        r_json = r.json()
        # 用点方法来获得notice的内容
        yesterday = jsonpath(r_json, "$.data.yesterday.notice")  
        print(yesterday)
        # 获得aqi=15 的forecast元素
        aqi = jsonpath(r_json, "$..forecast[?(@.aqi==15)]")
        print(aqi)

当不知道有jsonpath这个神器的时候,我是通过遍历一个个元素,然后再去比对具体的字段信息,比如下方:获得duration 超过7000 的api信息

{
	"apis": [{
		"path": "/path",
		"duration": 7890
	}, {
		"path": "/path",
		"duration": 6890
	}, {
		"path": "/path",
		"duration": 5890
	}]
}

通过遍历的方式获得:

apis = '{"apis":[{"path":"/path","duration":7890},{"path":"/path","duration":6890},{"path":"/path","duration":5890}]}'
print(json.loads(apis))
apis_json = json.loads(apis)
# 一个个遍历
api_duration = []
for api in apis_json["apis"]:
   duration = api["duration"]
   if int(duration) > 7000:
       print(str(duration))
       api_duration.append(api["path"])
print(api_duration)

通过jsonpath获得

#jsonpath 更简单
api_duration2 = jsonpath(apis_json, "$.apis[?(@.duration>7000)].path")
print(api_duration2)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: python-json校验-jsonpath解析

本文链接: https://lsjlt.com/news/173300.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python-json校验-jsonpath解析
    目录背景表示法jsonpath的语法示例实战背景 在进行接口自动化测试的时候,对响应结果进行校验,基本上都是对json数据的校验,响应内容十分复杂,当然验证也是一个很庞大的工程 ,不...
    99+
    2022-11-21
    python json校验 python json校验 jsonpath python json
  • 解析python中的jsonpath提取器
    目录为什么要用jsonpathjsonpath的语法jsonpath 解析使用示例为什么要用jsonpath 就跟为什么要用xpath一样,jsonpath的设计灵感来源于xpath...
    99+
    2024-04-02
  • Java 4种校验注解(值校验、范围校验、长度校验、格式校验)
    1 值校验 1.1 @NotNull注解 被注解的元素必须不为空,一般用于数值类型的参数校验 @NotNull(message = "用户编号不能为空") private Integer userId; 2 @NotBlank注解 验证注解...
    99+
    2023-08-31
    java 开发语言
  • Python Json读写操作之JsonPath怎么使用
    Python Json读写操作_JsonPath用法详解1. 介绍JSONPath是一种信息抽取类库,是从JSON文档中抽取指定信息的工具,提供多种语言实现版本,包括Javascript、Python、PHP和Java。JSONPath的安...
    99+
    2023-05-14
    Python JSON jsonpath
  • java如何校验json的格式
    这篇文章主要介绍“java如何校验json的格式”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java如何校验json的格式”文章能帮助大家解决问题。JSON SchemaJSON Schema 是...
    99+
    2023-07-06
  • golang整合antlr语法校验解析
    目录1. 背景2. goland安装antlr插件3. 编写语法校验规则4. 语法校验1. 背景 在项目中我们可能会遇到表达式检索的场景,例如,输入以下表达式检索,需要解析表达式并得...
    99+
    2023-02-28
    go antlr语法校验 go antlr antlr语法校验
  • Python实现CRC校验
    <pre name="code" class="python"><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(...
    99+
    2023-01-31
    Python CRC
  • python 计算校验和
    校验和是经常使用的,这里简单的列了一个针对按字节计算累加和的代码片段。其实,这种累加和的计算,将字节翻译为无符号整数和带符号整数,结果是一样的。 使用python计算校验和时记住做截断就可以了。 这里仅仅是作为一个代码样本,权作标记,直接...
    99+
    2023-01-31
    python
  • Golang经典校验库validator用法解析
    目录开篇validator使用方法内置校验器1. Fields2. Network3. Strings4. Formats5. Comparisons6. Other7. 别名错误处...
    99+
    2024-04-02
  • 参数校验Spring的@Valid注解用法解析
    参数校验Spring的@Valid注解 @Valid 注解通常用于对象属性字段的规则检测。 以新增一个员工为功能切入点,以常规写法为背景,慢慢烘托出 @Valid 注解用法详解。 那...
    99+
    2024-04-02
  • JSON解析-python实现
    本文从以下几个方面进行讨论: 1. JSON的基本概念 2. python解析JSON 3. 参考 1. JSON基本概念 1.1 JSON概念及特点 JSON 指的是 JavaScript 对象表示法(JavaScrip...
    99+
    2023-01-31
    JSON python
  • Spring 中@Validated 分组校验的使用解析
    目录Spring @Validated分组校验的使用引入POM依赖定义接收数据的Vo统一异常处理类测试类页面效果测试使用@Validated分组遇到的坑解决办法Spring @Val...
    99+
    2024-04-02
  • Ajvformat校验使用示例分析
    目录初始化项目demo运行分解新建index.js文件分析总结初始化项目demo npm init -y 安装 Ajv 版本 7 npm install ajv 安装ajv-...
    99+
    2022-11-13
    Ajv format校验 Ajv format
  • python解析与组装json
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 J...
    99+
    2023-01-31
    python json
  • element表单使用校验之校验失效问题详解
    目录第一种可能的错误: 字段错误第二种:触发校验错误validator总结首先是html必须正确,直接看代码示例: <el-form ref="form" :mode...
    99+
    2022-11-13
    element表单校验 element输入框校验 elementui表单单独校验
  • python crc32两种校验方式
    python crc32有两种校验.第一种是assii码校验第二种是16进制校验. import binascii #https://www.cnblogs.com/kerndev/p/5537379.html #https://st...
    99+
    2023-01-31
    两种 方式 python
  • python 文件MD5 SHA1校验计
    #coding: GBK #md5SHA1文件校验值计算 #使用方法: python 文件.py  验证文件 import hashlib import sys import os defmd5_sum(filename):     #校验...
    99+
    2023-01-31
    文件 python
  • JSONLINT:python的json数据验证库实例解析
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写。 JSON 函数 使用 JSON 函数需要导入 json 库:import json。 ...
    99+
    2022-06-04
    实例 数据 JSONLINT
  • 解析spring-security权限控制和校验的问题
    前言     在我们项目中经常会涉及到权限管理,特别是一些企业级后台应用中,那权限管理是必不可少的。这个时候就涉及到技术选型的问题。在...
    99+
    2024-04-02
  • spring自定义校验注解ConstraintValidator的示例分析
    这篇文章主要介绍spring自定义校验注解ConstraintValidator的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、前言系统执行业务逻辑之前,会对输入数据进行校验,检测数据是否有效合法的。所以...
    99+
    2023-06-20
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作