首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spring Cloud Contract Groovy contract中使用复杂的JSON

在Spring Cloud Contract Groovy contract中使用复杂的JSON
EN

Stack Overflow用户
提问于 2018-10-04 23:12:58
回答 2查看 1K关注 0票数 6

我一直在尝试如何正确地实现Spring Cloud Contract Verifier,但是我试图通过contract强制执行的JSON很复杂,我不确定如何在Groovy表示中处理它。JSON主体有时包含键的子对象,有时包含对象数组。

代码语言:javascript
复制
    response {
    status(200)
    headers { contentType applicationJson() }
    body(
        "attrbte1": 777310402,    
        "attrbte2": 100,
        "attrbte3": "CAPSULE",
        "attrbte4": "01655",
        "attrbte5": "281604",
        "attrbte6": "28160420",
        "genericCodeNo": 16353,
        "stc": {
            "stcAttrbt1": 10000001600,
            "stcAttrbt2": "8875",
            "stcAttrbt3: "2008-08-04T00:00:00.000+0000",
            "stcAttrbt4": null
        },
        "gtc": {
            "gtcAttbt1": 10000000028,
            "gtcAttbt2": "0N",
            "gtcAttbt3": "2008-08-04T00:00:00.000+0000"
        },
        "etcs": [
            {
                "etcAttbt1": 530,
                "etcAttbt2": null,
                "etcAttbt3": null
            }
        ],
        "icds": [
            {
                "icdCode": "F31.3",
                "icdCode2": "F45.232"
            },
            {
                "icdCode": "F40.01",
                "icdCode2": "F44.2341"
            }
        ]
        )

给定子对象用大括号括起来,groovy认为它是在打开/关闭一个语句/操作,(有点像是...)但它是JSON主体的一部分。我尝试了三重单引号斜杠(‘/),但它将正文视为一个连续的字符串,而不检查各个属性。

问题是,是否有一个转义序列可以忽略大括号,同时保留正文的层次布局。

EN

回答 2

Stack Overflow用户

发布于 2020-06-26 11:22:25

使用方括号来创建对象(是的,我知道在JSON中方括号是用于数组的,这很奇怪,它不是我发明的)

您可以使用引号或不使用引号将字段名称括起来,它们似乎都有效。

代码语言:javascript
复制
body([
    stringField1: value(regex(".*")),
    stringField2: value(regex(alphaNumeric()),
    innerObject1: [
        innerStringField1: "Hardcoded1",
        innerIntegerField1: anyInteger()
    ]
])

等?如果方括号是用于对象的,我如何制作JSON列表?

双方括号。我是认真的。

代码语言:javascript
复制
body(
    [[
        stringFieldOfObjectInList: regex(".*")
    ]]
)

如何创建一个整数列表,比如ids?

老实说,我还没试过。但我希望如果你在数组中没有字段名,Spring CC会假设它是一个原语,它将“只是工作”。

票数 3
EN

Stack Overflow用户

发布于 2020-06-25 08:52:29

代码语言:javascript
复制
response {
    status(200)
    headers { contentType applicationJson() }
    body(**'''**
        "attrbte1": 777310402,    
        "attrbte2": 100,
        "attrbte3": "CAPSULE",
        "attrbte4": "01655",
        "attrbte5": "281604",
        "attrbte6": "28160420",
        "genericCodeNo": 16353,
        "stc": {
            "stcAttrbt1": 10000001600,
            "stcAttrbt2": "8875",
            "stcAttrbt3: "2008-08-04T00:00:00.000+0000",
            "stcAttrbt4": null
        },
        "gtc": {
            "gtcAttbt1": 10000000028,
            "gtcAttbt2": "0N",
            "gtcAttbt3": "2008-08-04T00:00:00.000+0000"
        },
        "etcs": [
            {
                "etcAttbt1": 530,
                "etcAttbt2": null,
                "etcAttbt3": null
            }
        ],
        "icds": [
            {
                "icdCode": "F31.3",
                "icdCode2": "F45.232"
            },
            {
                "icdCode": "F40.01",
                "icdCode2": "F44.2341"
            }
        ]**'''.toString()**
        )
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52650130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档