You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pact-JVM中匹配键符合正则表达式的对象?

在Pact-JVM中匹配键为正则、值为布尔类型的动态对象

我刚好碰到过类似的需求,其实你完全可以用eachKeyLike方法结合基本类型匹配器来实现这个场景,不需要嵌套对象。

你之前误解了eachKeyLike的nestedObject参数——它不仅可以用来定义嵌套的对象结构,也能直接指定基本类型的匹配规则。针对你的场景,只需要在第三个参数的Consumer里调用booleanType(),就能把每个动态键对应的值匹配为布尔类型。

具体代码示例

LambdaDsl.newJsonArray((array) -> {
    array.object((account) -> {
        account.numberType("accountId", 1);
        account.array("permissions", (permArray) -> {
            permArray.object((perm) -> {
                perm.object("schedule", (schedule) -> {
                    // 第一个参数是示例键,第二个是键的正则表达式,第三个定义值的匹配规则
                    schedule.eachKeyLike(
                        "01/01/2018",
                        "\\d{2}/\\d{2}/\\d{4}",
                        (valueMatcher) -> valueMatcher.booleanType(false)
                    );
                    perm.numberType("permissionId", 3);
                });
            });
        });
    });
});

代码说明

  • 第二个参数的正则\\d{2}/\\d{2}/\\d{4}用来匹配所有符合MM/DD/YYYY格式的日期键
  • valueMatcher.booleanType(false)表示:不管实际响应里对应的值是true还是false,只要是布尔类型就算匹配通过(示例值填false只是给Pact生成契约时用的参考)
  • 这样写之后,Pact会验证schedule对象里的所有键都符合指定的正则,并且对应的值都是布尔类型,不管键的数量有多少都能正确匹配

内容的提问来源于stack exchange,提问作者Quincy Bowers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:45:26