2017-10-03 6 views
1

Cela peut être très évident, alors s'il vous plaît soyez doux.httpBuilder JSON réponse analyse comprendre []

Le code suivant:

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' 
    } 
} 

donne le résultat suivant:

[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] 

Il semble être la comparaison gw-6eee89 à [gw-6eee89]

Je ne vois pas pourquoi la les crochets ne sont pas supprimés lorsque la valeur est appelée. Toute aide très appréciée.

Répondre

1

Depuis objects est une instance de List et si vous appelez list.someProperty vous obtiendrez une liste de valeurs someProperty pour tous les objets sur la liste:

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

Vous devez chercher le premier objet. Ainsi, par exemple: objects.name[0].

+0

Parfait. Merci. Je pensais que ce serait quelque chose d'évident. – Mondo