[英]Access to JSON element in groovy map
我正在嘗試訪問通過api調用返回到地圖的json元素,因此我可以將其傳遞給另一個api調用。 我似乎無法正確創建一個變量並為其提供所需的值。 這是返回的json,我需要訪問Id元素。
{
"totalSize": 1,
"done": true,
"records": [
{
"attributes": {
"type": "User",
"url": "/services/data/v24.0/sobjects/User/MYIDNUMBER"
},
"Id": "MYIDNUMBER"
}
]
}
這是我使用的寧靜服務調用,以及嘗試訪問Id元素並將其放入sfId的嘗試,因此可以在下一個API調用中使用它
def http = new HTTPBuilder(instance_domain)
http.request(GET,JSON) { req ->
uri.path = "services/data/v24.0/query/"
uri.query = [q:"SELECT Id from User WHERE Email = '$loginid@myschool.edu'"]
headers['Authorization'] = "Bearer $access_token"
response.success = { resp, json ->
json.each{ key,value ->
sfMap = [sfUser: [json: json]]
}
sfId = sfMap[records.Id]
}
response.failure = { resp, json ->
println resp.status
println json.errorCode
println json.message
}
}
我在此服務器的portletized版本所在的服務器上收到以下錯誤
2014-07-08 08:02:39,710 ERROR [http-bio-443-exec-161] portal-web.docroot.html.portal.render_portlet_jsp:154 groovy.lang.MissingPropertyException: No such property: records for class: groovyx.net.http.HTTPBuilder$RequestConfigDelegate
根據您的json結構,這就是我可以說的。 records
是一個數組,可能包含多個對象,因此可能包含Id
。
def json = new groovy.json.JsonSlurper().parseText ("""
{
"totalSize": 1,
"done": true,
"records": [
{
"attributes": {
"type": "User",
"url": "/services/data/v24.0/sobjects/User/MYIDNUMBER"
},
"Id": "MYIDNUMBER"
}
]
}
""")
如果您確定第一個元素的ID,則可以解決問題:
println json.records.first().Id
否則,這可能是一個更好的選擇,它將為您提供records
中所有對象的Id
。
println json.records.collect{ it.Id }
@kunal,有幫助。
為了將來參考,這是我添加了稍后要使用的變量的代用方式,並從json響應中為其分配值的方式。
def http = new HTTPBuilder(instance_domain)
http.request(GET,JSON) { req ->
uri.path = "services/data/v24.0/query/"
uri.query = [q:"SELECT Id from User WHERE Email = '$loginid@myschool.edu'"]
headers['Authorization'] = "Bearer $access_token"
response.success = { resp, json ->
sfId = json.records.first().Id <----- this did the trick
json.each{ key,value ->
sfMap = [sfUser: [json: json]]
}
}
response.failure = { resp, json ->
println resp.status
println json.errorCode
println json.message
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.