【问题标题】:httpBuilder JSON response parse includes [ ]httpBuilder JSON 响应解析包括 [ ]
【发布时间】:2017-10-03 07:48:33
【问题描述】:

这可能很明显,所以请温柔。

以下代码:

def http = new HTTPBuilder(uri)

http.request(POST,JSON ) { req ->
    headers.'Content-Type' = 'application/json'
    headers.'x-chkp-sid' = CHKPsid
    body = [
            "limit" : 100,
            "offset" : 0,
            "details-level" : "standard"
    ]

    response.success = { resp, json ->
       println (json)
       println "POST Success. SHOWGWS: ${resp.statusLine}"
       println json.objects.name
       println json.size()
       println json.getClass()
     assert json.objects.name == 'gw-6eee89'
    }
}

给出以下输出:

[objects:[[uid:892d08fb-0dca-5146-8587-49fa07ece24c, name:gw-6eee89, type:simple-gateway, domain:[uid:41e821a0-3720-11e3-aa6e-0800200c9fde, name:SMC User, domain-type:domain]]], from:1, to:1, total:1]

POST Success. SHOWGWS: HTTP/1.1 200 OK

[gw-6eee89]

4

class groovy.json.internal.LazyMap

Caught: Assertion failed: 

   assert json.objects.name == 'gw-6eee89'
       |    |       |    |
       |    |       |    false
       |    |       [gw-6eee89]
       |    [[uid:892d08fb-0dca-5146-8587-49fa07ece24c, name:gw-6eee89, type:simple-gateway, domain:[uid:41e821a0-3720-11e3-aa6e-0800200c9fde, name:SMC User, domain-type:domain]]]
       [objects:[[uid:892d08fb-0dca-5146-8587-49fa07ece24c, name:gw-6eee89, type:simple-gateway, domain:[uid:41e821a0-3720-11e3-aa6e-0800200c9fde, name:SMC User, domain-type:domain]]], from:1, to:1, total:1]

似乎是在将 gw-6eee89 与 [gw-6eee89] 进行比较

我不明白为什么在调用该值时方括号没有被删除。非常感谢任何帮助。

【问题讨论】:

    标签: json dictionary groovy httpbuilder


    【解决方案1】:

    由于objectsList 的一个实例,如果您调用list.someProperty,您将获得列表中所有对象的someProperty 值列表:

    [[name:1],[name:2]].name == [1, 2]
    

    您需要获取第一个对象。例如:objects.name[0].

    【讨论】:

    • 完美。谢谢。我认为这很明显。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2020-03-04
    • 2013-04-12
    相关资源
    最近更新 更多