如何使用groovy断言json响应内容?

如何使用groovy断言json响应内容?,groovy,jsonslurper,Groovy,Jsonslurper,在回应请求时,我有以下内容: "comp":[ { "type":"header", "version":1, "settings": {"logo":"mylogo", "logoPosition":"left", "inverseLogosPosition":false, "headerTitle":"My Report", "headerTitlePosition":"left", "pageBreak":false }

在回应请求时,我有以下内容:

"comp":[
{
"type":"header",
"version":1,
"settings":
     {"logo":"mylogo",
      "logoPosition":"left",
      "inverseLogosPosition":false,
      "headerTitle":"My Report",
      "headerTitlePosition":"left",
      "pageBreak":false
}
},
我想断言设置的内容。 例如,我尝试使用此方法来断言logosposition=“left”

断言json.components.settings[0]。logoPosition[0]=“左”

它不起作用了

这部分工作正常:

assert json.comp.type[0] == "header"
assert json.comp.version[0] == 1

请提供任何帮助,谢谢

这将只是
logosposition
,而不是
logosposition[0]


为什么不将一些预期的json作为字符串,用JsonSlurper将其转换为映射,然后进行比较?

提供的json无效。您可以使用两种路径:

完整示例:

import groovy.json.JsonSlurper

def json = '''{
"comp":[
    {
        "type":"header",
        "version":1,
        "settings": {
            "logo":"mylogo",
            "logoPosition":"left",
            "inverseLogosPosition":false,    
            "headerTitle":"My Report",    
            "headerTitlePosition":"left",        
            "pageBreak":false
        }
    }
]}'''

def slurped = new JsonSlurper().parseText(json)

assert slurped.comp.settings.logoPosition[0] == "left"
assert slurped.comp[0].settings.logoPosition == "left"
@柯克·道格拉斯,不是我的:)蒂姆·耶茨,首先解决了这个问题:)
import groovy.json.JsonSlurper

def json = '''{
"comp":[
    {
        "type":"header",
        "version":1,
        "settings": {
            "logo":"mylogo",
            "logoPosition":"left",
            "inverseLogosPosition":false,    
            "headerTitle":"My Report",    
            "headerTitlePosition":"left",        
            "pageBreak":false
        }
    }
]}'''

def slurped = new JsonSlurper().parseText(json)

assert slurped.comp.settings.logoPosition[0] == "left"
assert slurped.comp[0].settings.logoPosition == "left"