我对RESTful api感到困惑。 的代码:
import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.Method.*
import static groovyx.net.http.ContentType.JSON
import org.codehaus.groovy.grails.web.json.JSONObject
def isMailer = new HTTPBuilder( 'http://mailer-api.com' )
isMailer.request( GET, JSON ) {
uri.path = '/is/mail/rest/json/' + token
isMailer.auth.basic 'ddd', 'aaa'
headers.'User-Agent' = 'Mozilla/5.0 Ubuntu/8.10 Firefox/3.0.4'
response.success = { resp, json ->
// response handler for a success response code:
System.out << json
if(json.has("DISP_NAME")) {
println "************************"
res = "Yes"
} else if (json.has("ListError")) {
res = "No"
}
}
}
// handler for any failure status code:
response.failure = { resp ->
println "Unexpected error: ${resp.statusLine.statusCode} : ${resp.statusLine.reasonPhrase}"
}
}
return res
}
输出w.r.t System.out&lt;&lt; JSON
{
"DISP_NAME" : "owner-atob",
"DOM_NAME" : "mailer",
"GROUP_ID" : "1229815",
"GROUP_NAME" : "owner-atob"
}
错误w.r.t if(json.has(“DISP_NAME”))
No signature of method: org.apache.http.conn.EofSensorInputStream
is applicable for argument types: (java.lang.String) values: [DISP_NAME]
我的问题:
我想检查一下json输出中是否存在密钥(此处为DISP_NAME
)。
因此,我想在if-else块中区分我的工作。
答案 0 :(得分:8)
尝试更换:
if(json.has("DISP_NAME")) {
与
if( json.DISP_NAME ) {
当然,这不会区分NULL
或空值和缺失值。
要检查字段是否在JSON对象中,只需执行:
if( json.keySet().contains( 'DISP_NAME' ) ) {