错误:JSONObject的[ “结果”]不是一个JSONObject

weixin_38061494 2019-09-12 03:56:27

我获取一个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。有人可以在这里解释问题吗?








...全文
1798 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38066147 2019-09-12
  • 打赏
  • 举报
回复

JSONObject.getJSONObject只能返回JSONObject。它不会返回boolean,long或String,特别是它不会返回JSONObject.NULL,因为这不是JSONObject本身(它说文档中的Java Object,并且在实现中具有特定的私有类型)。 使用isNull预先检查它,或者只是接受它抛出一个异常并做好准备。当然,你也可以使用通用的get,然后在JSONObject.NULL之后检查结果,也许使用instanceof,这些都不会让代码更简单,并且它们都会在某个时候引入铸造/铸造尝试。 我为了便于阅读而链接了Android文档,但您当然也可以深入了解源代码,如getJSONObject。如果您有兴趣,您可以在同一个文件的开头找到NULL。

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧