簡體   English   中英

錯誤:JSONObject [“結果”]不是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 它不會返回booleanlongString ,也不會特別返回JSONObject.NULL ,因為它本身不是JSONObject (它在文檔中表示為Java Object ,並且在實現中具有特定的私有類型)。
使用isNull事先檢查它,或者僅接受它引發異常並為此做准備。 當然,您也可以使用通用的get ,然后再對JSONObject.NULL檢查結果,也許使用instanceof ,只是這些方法都不會使代碼更簡單,並且所有方法都會在某些時候引入強制類型轉換/廣播嘗試。

我鏈接了Android文檔以提高可讀性,但是您當然也可以深入研究源代碼,例如getJSONObject 如果您有興趣,可以在同一文件的開頭找到NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM