【问题标题】:org.json.JSONObject constructor not accepting what appears to be a valid JSON stringorg.json.JSONObject 构造函数不接受看似有效的 JSON 字符串
【发布时间】:2010-09-07 22:37:28
【问题描述】:

我在一个Android 应用程序中有一个string,我正在尝试将它转换为JSONObjectstring 看起来像这样(除了更长并且使用实际值而不是我在此处输入的虚拟值):

[[{"1":"a"}],[{"1a":"1a","1b":"1b"},{"2a":"2a","2b":"2b"}]]

我已经将这个确切的string 输入到两个在线JSON validators 中,并且他们都确认它是有效的JSON data。所以我假设JSONObject 构造函数能够接受这个字符串并将其转换为JSONObject。但是当我尝试时:

json = new JSONObject(result);

其中“result”是一个包含上面列出的字符串的字符串变量,我得到以下异常:

JSONException: A JSONObject text must begin with '{' at character 1 of [[{"1":"a"}],[{"1a":"1a","1b":"1b"},{"2a":"2a","2b":"2b"}]]

这里发生了什么? JSONObject 的解析器坏了吗?

【问题讨论】:

    标签: java android json jsonobject android-json


    【解决方案1】:

    您正在尝试创建一个 JSONObject,但您实际上给它的是一个 JSONArray。您是否尝试创建 JSONArray?

    或者,您可以将数组包装在一个对象中,以便您可以从中创建一个 JSONObject。

    【讨论】:

    • 好吧,好吧。这正是问题所在。为什么我没看到?非常感谢。
    • JSONObject jsonObject = new JSONObject(json.toString())...这行抛出错误说“没有找到适合 JSONObject(String) 的构造函数”
    【解决方案2】:

    我建议改用GSon library,因为它似乎功能更全面。

    此外,使用this tool 测试您的数据可能会有所帮助(顺便说一句,您的数据是有效的):

    【讨论】:

      猜你喜欢
      • 2011-01-03
      • 2020-11-14
      • 2010-12-28
      • 1970-01-01
      • 2011-01-10
      • 2019-05-27
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      相关资源
      最近更新 更多