错误:JSONObject的[ “结果”]不是一个JSONObject
我获取一个JSONObject “结果”,从以下的JSONObject:错误:JSONObject的[ “结果”]不是一个JSONObject
{ "success" : true,
"message" : "",
"result" : {
"uuid" : "e606d53c-8d70-11e3-94b5-425861b86ab6"
}
}
我使用这个代码:
CloseableHttpClient httpclient = HttpClients.createDefault(); String url = "some url";
HttpGet httpget20 = new HttpGet(url);
httpget20.setHeader("apisign",buildHmacSignature(url, apisecret));
try ( CloseableHttpResponse response2 = httpclient.execute(httpget20)){
HttpEntity entity = response2.getEntity();
JSONObject obj2 = new JSONObject(EntityUtils.toString(entity));
JSONObject result = obj2.getJSONObject("result");
obj2
是整个json对象包括“成功”,“消息”和“结果”。 然而,这行代码生成以下错误信息:
Exception in thread "AWT-EventQueue-0" org.json.JSONException: JSONObject["result"] is not a JSONObject.
我不知道一个JSONObject怎么也不能一个JSONObject。有人可以在这里解释问题吗?
回答:
JSONObject.getJSONObject
只能返回JSONObject
。它不会返回boolean
,long
或String
,特别是它不会返回JSONObject.NULL
,因为这不是JSONObject
本身(它说文档中的Java Object
,并且在实现中具有特定的私有类型)。
使用isNull
预先检查它,或者只是接受它抛出一个异常并做好准备。当然,你也可以使用通用的get
,然后在JSONObject.NULL
之后检查结果,也许使用instanceof
,这些都不会让代码更简单,并且它们都会在某个时候引入铸造/铸造尝试。
我为了便于阅读而链接了Android文档,但您当然也可以深入了解源代码,如getJSONObject
。如果您有兴趣,您可以在同一个文件的开头找到NULL
。
以上是 错误:JSONObject的[ “结果”]不是一个JSONObject 的全部内容, 来源链接: utcz.com/qa/265202.html