错误: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,longString,特别是它不会返回JSONObject.NULL,因为这不是JSONObject本身(它说文档中的Java Object,并且在实现中具有特定的私有类型)。
使用isNull预先检查它,或者只是接受它抛出一个异常并做好准备。当然,你也可以使用通用的get,然后在JSONObject.NULL之后检查结果,也许使用instanceof,这些都不会让代码更简单,并且它们都会在某个时候引入铸造/铸造尝试。

我为了便于阅读而链接了Android文档,但您当然也可以深入了解源代码,如getJSONObject。如果您有兴趣,您可以在同一个文件的开头找到NULL

以上是 错误:JSONObject的[ “结果”]不是一个JSONObject 的全部内容, 来源链接: utcz.com/qa/265202.html

回到顶部