[英]getJSONObject error: JSONObject[“…”] is not a JSONObject
[英]Error: JSONObject[“result”] is not a 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
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.