json - 如何比较json响应?
问题描述
我需要比较 beanshell 采样器中的 json 响应并打印条件是通过还是失败。有人可以帮忙吗,我们如何比较它?我已经有一个 json 格式的响应,一个我将在执行测试时得到另一个,我需要比较这两个单词。
I tried using if/else but then its not working properly.
JSONObject JsonResponseinput = new JSONObject();
JsonResponseinput.toString();
print(JsonResponseinput + " = PASS");
f.close();
String s=JsonResponseinput.toString();
if (s == JsonResponse)
{
f = new FileOutputStream("output/path/API_OUTPUT.csv", true);
p = new PrintStream(f);
this.interpreter.setOut(p);
print(s + " = PASS");
f.close();
}
Else
{
print(JsonResponseinput + " = FAIL")
}
解决方案
至少有 4 种方法可以做到这一点:
使用杰克逊像:
final JSONObject obj1 = /*json*/; final JSONObject obj2 = /*json*/; final ObjectMapper mapper = new ObjectMapper(); final JsonNode tree1 = mapper.readTree(obj1.toString()); final JsonNode tree2 = mapper.readTree(obj2.toString()); if (tree1.equals(tree2)) { log.info('PASS'); } else { log.info('FAIL') }
使用GSON像:
JsonParser parser = new JsonParser(); JsonElement o1 = parser.parse("{a : {a : 2}, b : 2}"); JsonElement o2 = parser.parse("{b : 2, a : {a : 2}}"); assertEquals(o1, o2);
使用JsonSlurper像:
def json1 = new groovy.json.JsonSlurper().parseText("json1") def json2 = new groovy.json.JsonSlurper().parseText("json2") if (json1 == json2) { log.info('PASS') } else { log.info('FAIL') }
像使用JSONAssert
try { org.skyscreamer.jsonassert.JSONAssert.assertEquals("json1", "json2", false) println('PASS') } catch (Exception ex) { println('FAIL') }
更多信息:使用 JMeter 比较 REST API 响应的最简单方法
PS 忘记 Beanshell,从 JMeter 3.1 开始,您应该使用 JSR223 测试元素和 Groovy 语言来编写任何形式的脚本
推荐阅读
- php - 使用 ionic、php 和 my sql 创建一个函数,每次在日历中的特定日期创建事件时在准确时间调用
- c# - 在 .msi 安装程序中包装 C# 应用程序
- c# - .dtbcache 文件有什么作用?
- c++ - 如何在 C++ 中增加数组值?
- python - Pandas:将列标题转换为行标签
- zlib - 如何使用 zlib 计算 CRC32-C 校验和
- node.js - 解析多部分/相关响应并将附件保存到文件
- eclipse - 如何更改 Eclipse Neon.3 中的 Google App Engine SDK 位置?
- wordpress - 全宽菜单 Wordpress
- vagrant - Vagrant up 失败并显示警告:远程连接断开。重试