python diff json方法
时间:2020-03-26
本文章向大家介绍python diff json方法,主要包括python diff json方法使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在测试过程中经常会对比两个json的异同,如果当json串较长时,一个一个的对比显然是很浪费时间的。
所以写一个比较json异同的测试方法是很有必要的。
下面介绍一下比较json异同的两种方法,以及测试demo。
json_tools
首先介绍下python的类库 json_tools
安装:pip install json_tools
比较json
import json_tools def jsonDiff(): a={'left': 1, 'right': "r","box":"b"} b={'left': 1, 'right': "R","boxs":"box"} result=json_tools.diff(a,b) print result if __name__ == '__main__': jsonDiff()
结果:
[{'prev': 'b', 'remove': '/box'}, {'prev': 'r', 'value': 'R', 'replace': '/right'}, {'add': '/boxs', 'value': 'box'}]
输出导读:
上面的输出显示的是b相对于a的变化:
1) b和a都有键’right’,但是b相对a键’right’的值发生了变化,由原来的r变为R,所以比较结果的list有{'replace': '/right', 'value': 'R', 'prev': 'r'}
其中replace标识发生变化的键,value标识变化后即当前该键的值,prev表示该键此前的值。
2) b中的boxes相对于a,是新增的键,所以结果集中有{'add': '/boxs', 'value': 'box'}
3) b相对于a没有box键,所以结果集中有{'remove': '/box', 'prev': 'b'}
多层嵌套的对比
输出为:
[{'replace': '/left', 'value': 5, 'prev': 6}, {'add': '/right/ads/des', 'value': '新增键'}, {'remove': '/box/3', 'prev': {'id': 4, 'title': '标题4'}, 'details': 'array-item'}]
其中/right/ads/des,表示{“right”:{“ads”:{“des”:}}}
递归
下面介绍下作者自己编写的比较方法,使用了递归的方法比较两个json串
可以输出不同的value,也可以根据自己的需要进行改进。
原文地址:https://www.cnblogs.com/snailon/p/12577176.html
- RavenDb学习(三)静态索引
- 从头编写 asp.net core 2.0 web api 基础框架 (1)
- 使用Identity Server 4建立Authorization Server (6) - js(angular5) 客户端
- 如何实现超高并发的无锁缓存?
- 使用Identity Server 4建立Authorization Server (5)
- 多库多事务降低数据不一致概率
- 利用Python实现DGA域名检测
- 一个“爆款”成功的API,都离不开这8条设计准则
- RavenDb学习(八)高级特性上半部分
- 微信钱包中58到家首页为什么这么快
- hbase源码系列(二)HTable 探秘
- hbase源码系列(三)Client如何找到正确的Region Server
- hbase源码系列(五)Trie单词查找树
- 如何在特定的渗透测试中使用正确的Burp扩展插件
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- pyspark之常用算子
- linux之shell综合例子之定时任务
- spring之配置单例的集合bean,以供多个bean进行引用
- 【python-leetcode25-翻转链表】K 个一组翻转链表
- spring之通过实例工厂方法配置Bean
- 细品redis分布式锁
- 【python-leetcode102-树的宽度遍历】二叉树的层次遍历
- 【python-树的宽度遍历】二叉树的反向层次遍历
- 基于TypeScript封装Axios笔记(二)
- redis高性能数据结构之有序集
- spring之通过静态工厂方法配置Bean
- 【python-leetcode107-树的宽度遍历】二叉树的层次遍历Ⅱ
- spring之通过注解方式配置Bean(一)
- React17新特性:启发式更新算法
- spring之通过FactoryBean配置Bean