问题标签 [jsonassert]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - 使用 REST-Assured 的 ifValidationFails 和 JSONAssert
我决定使用REST-Assured来测试 REST 服务。结果(大部分)是 JSON 和 XML 文档。对于检查 JSON,我发现JSONassert非常有用。
我不想比较身体的各个部位,而是比较完整的身体反应。因此,REST-Assured 文档中的示例不是很有帮助,因为它们提取了响应正文的一部分。
目前,我正在提取身体并在之后比较身体:
问题是这ifValidationFails()
没有任何意义,因为asString()
总是成功的。
现在我想知道如何将JSONAssert.assertEquals
和 Hamcrest包含assertThat
到given()
REST-Assured 的方法中以启用失败验证的日志记录。
完整的源代码可在Eclipse Winery 的存储库中获得。
java - JSONCompareResult 不适用于原始类型整数的 GSON。为什么?
当我遇到这个问题时,我正在使用Gson和JSONAssert库。
我有以下函数来比较两个整数:
当我运行时runCompareInts(1, 2)
,我得到"Objects are same."
了结果,这不应该是这种情况。
我发现new Gson().toJson(1)
返回 String "1"
,这是一个有效的 JSON 字符串,因此比较应该正确进行并进入else
块。
比较整数 usingJSONAssert.assertNotEquals("1", "2", true)
不会导致任何异常。这意味着 Gson 转换值不是问题。
谁能告诉我我的runCompareInts()
功能有什么错误?谢谢你。
编辑:JSONAssert.assertNotEquals(new Gson().toJson(source), new Gson().toJson(target), true)
也可以正常工作。
java - 比较Java中的两个JSON时忽略数组中的特定节点
我想比较 Java 8 中的两个 JSON 字符串是否相等,但忽略特定的已知节点,这些节点包含预期不同的值并且是可以容忍的差异,例如时间戳。目前使用来自 org.SkyScreamer 的 JSONAssert v1.5.0,我能够“忽略”其中一些节点,但不能“忽略”数组中的节点。
我想要扩展我当前的 JSONComparator 以包含一个自定义,它的第一个“路径”参数具有一个数组地址。
下面的代码是我试图证明解决方案的尝试;除了 anArray[].id 值之外,预期/实际 JSON 字符串都是相同的。我希望此测试通过,但失败并出现错误:java.lang.AssertionError: anArray[0] 找不到元素 {"id":"valueA"} 的匹配项
rest-assured - 通过 RESTAssured 对部分 JSON 使用 JSONAssert
我能够使用 RESTAssured 从服务中检索 JSON。
我想使用 JSONPath 功能来提取 JSON,然后使用 JSONAssert 进行比较。
这是我的例子:
方法一——使用 JSONPath 获取 JSONObject
如何让 JSONPath 返回 JSONAssert 可以使用的 JSONObject?
在代码示例中:
这会返回一个java.util.ArrayList
. 这如何与 JSONAssert 一起使用来与预期的 JSON 进行比较?
方法 2 - 使用 JSONParser 解析提取的数据
如果我这样做data.toString()
,这将返回一个由于缺少对带有空格字符串的字符串值的引号处理而无法解析的字符串:
结果:
方法 3 - 使用 JSON 模式验证
是否可以仅从 JSON 中提取data
属性并在该部分上针对 JSON Schema 运行该属性?
注意:返回的整个 JSON 非常大。我只想从中验证data
属性。
执行 JSON 模式验证的示例会仅查找 JSON 中的data
属性吗?
谢谢;
java - 在 JSONAssert java 中使用 REGEX 验证 JSON 字符串
我将预期的 json 字符串存储在资源下的 json 文件中,如下所示。json 字符串由正则表达式组成。我正在使用 JSONAssert 库来比较两个 json 字符串。
我的实际响应包含这种格式的时间戳2018-11-13T04:10:11.233+0000
总是在正则表达式上给出以下错误
关于这个错误有什么建议吗?
java - 使用 JSONAssert 检查 JSON 数组中是否存在项目
我有一个类似于这样的 JSONObject:
如果我想使用 JSONAssert 来检查 item {"name":"678"} 是否存在并且我不知道 item 的 order 和 "external" 数组中的 item 数量,我应该如何在 Java 中执行?
似乎 ArrayValueMatcher 应该是要走的路,但我就是无法让它工作。
请帮忙
java - JSONAssert.assertEquals:比较时忽略多个字段
我有以下 JSON 结构
在我的 JUNIT 课程中,我将不得不比较两个具有上述结构的 JSON 文件。但是我想忽略字段address.number
和address.code
. 我知道我可以使用下面的代码来忽略一个字段,但是如何更改它以适应我的要求?
查看实现,我们提供给自定义方法的正则表达式似乎被修改了,我无法想出path
可以作为OR
条件的参数的值。
任何建议都非常感谢
谢谢!
java - 如何使用单个比较的多个 json 路径过滤comapre 2 json?
有 2 个 json,需要在两个 json 上应用多个路径。然后这些 json 应该通过一些断言在测试中进行比较。ide解决方案应该是:
什么不是解决方案: 1. 任何这样的代码:
需要过滤 jsons 并使用所有现有路径显示/失败。显示多个路径不匹配的错误。不是一一的json路径匹配。
org.assertj.core.api.SoftAssertions
- 也不是一个解决方案,因为很难从消息中了解哪些资产失败了。harcrest
allOf
/anyOf
也不是一个解决方案,因为它在第一次匹配的断言上失败,而不是结合它们。
PS任何关于 json diff 可视化的建议都是受欢迎的。理想的方式是这样的。(但这是在 javascript 中)
java - 使用正则表达式的 jsonAssert 嵌套 Json 验证
我需要针对正则表达式验证嵌套 json 的放心响应
这适用于没有嵌套 json 对象的 json。
不知道如何以类似的方式验证嵌套的 json