如何使用Wiremock校验请求体中字段值为JSON格式
解决方法
首先明确:你的请求示例里field_3本身就是JSON对象类型,不是字符串形式的JSON,所以用正则匹配的思路本身就错了——正则是用来匹配字符串的,没法直接匹配JSON对象结构。
针对你的场景,有两种正确的校验方式:
1. 匹配任意JSON对象
如果你只需要校验field_3是一个合法的JSON对象(不关心具体结构),直接用json-unit的${json-unit.any-object}占位符即可:
"request": { ... "bodyPatterns": [ { "equalToJson": { "field_1": "Value", "field_2": "${json-unit.any-number}", "field_3": "${json-unit.any-object}" } } ] }
2. 匹配特定结构的JSON对象
如果你需要校验field_3的具体结构(比如必须包含某些字段),可以直接写出对应的JSON结构模板,用占位符处理不确定的值:
"request": { ... "bodyPatterns": [ { "equalToJson": { "field_1": "Value", "field_2": "${json-unit.any-number}", "field_3": { "1.1": "${json-unit.any-number}", "1.2": "${json-unit.any-null}", "1.3": "${json-unit.any-null}", "1.4": "${json-unit.any-null}" } } } ] }
补充:如果field_3是字符串形式的JSON
如果你的场景里field_3是字符串类型(比如值是"{\"1.1\":2,...}"),那才需要用正则匹配,此时要注意JSON配置里的双重转义,简化版的正则写法如下:
"field_3": "${json-unit.regex}^\\{.*\\}$"
注:这个正则是简化版,复杂JSON场景建议用专门的JSON校验逻辑替代正则
内容的提问来源于stack exchange,提问作者lojz
相关产品推荐
相关产品推荐

