gpt4 book ai didi

java - 使用带正则表达式的 JSONAssert 进行 JSON 验证

转载 作者:搜寻专家 更新时间:2023-11-01 02:59:46 29 4
gpt4 key购买 nike

我在一个使用 REST 接口(interface)的开源项目中工作。为了验证(将实际响应与预期相匹配)我们在 JUnit 中的其余接口(interface),我们想使用 JSONAssert。 (https://github.com/skyscreamer/JSONassert)。但是我在使用上遇到了问题,请帮忙解决。

Expected JSON:
{
"objectId": "[^\\s]",
"protocol": "[^\\s]",
"hostName": "[^\\s]",
"port": "[^\\s]",
"commParams": "[^\\s]"
}

备注:objectId/protocol/hostName/port/commParams 可以任意但不能为空

Actual JSON:
{
"objectId": "controller2",
"protocol": "ftp",
"hostName": "sdnorchestrator",
"port": "21",
"commParams": "username:tomcat, password:tomdog"
}

问题1:我需要使用JSON Assert的哪个接口(interface)来解决上面的问题:低于一个?

JSONAssert.assertEquals("Expected JSON", "Actual JSON" new CustomComparator(
JSONCompareMode.LENIENT_ORDER, new Customization(PREFIX, new RegularExpressionValueMatcher<Object>())));

问题 2:这里的 PREFIX 应该是什么?(我试过“”、“.”、“.”但没有成功)

也欢迎针对上述问题提出任何其他建议(JSONAssert 除外)。

最佳答案

如果您想使用JSONAssert全局应用正则表达式自定义,您可以使用path = "* 构造一个Customization **",并使用不带参数的 RegularExpressionValueMatcher 构造函数。

示例:

final String expectedJson = "{objectId: \"[^\\s]+\", protocol: \"[^\\s]+\"}";
final String actualJson = "{\"objectId\": \"controller2\", \"protocol\": \"ftp\"}";

JSONAssert.assertEquals(
expectedJson,
actualJson,
new CustomComparator(
JSONCompareMode.LENIENT,
new Customization("***", new RegularExpressionValueMatcher<>())
)
);

此断言成功通过(使用 JSONassert 版本 1.5.0 进行测试)。

关于java - 使用带正则表达式的 JSONAssert 进行 JSON 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38823339/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com