【问题标题】:Error on constructing JSONArray from String从 String 构造 JSONArray 时出错
【发布时间】:2011-09-10 01:47:38
【问题描述】:

我正在尝试从字符串构造 JSONArray,并从其中提取 JSONObjects。这是我的代码:

String jsonStr = "[{\"name\" : \"John Doe\",\"gender\":\"male\",\"age\":40},{\"name\" : \"Jane Doe\",\"gender\":\"female\",\"age\":30}]";

JSONArray jsonArr = new JSONArray(jsonStr);

我在声明 JSONArray 的行上收到以下错误:

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code
        at org.json.JSONTokener.nextValue(JSONTokener.java:319)
        at org.json.JSONArray.<init>(JSONArray.java:119)
        at org.json.JSONArray.<init>(JSONArray.java:146)

我认为应该有一个 JSONObjects 数组。我构造字符串的方式有问题吗?任何帮助表示赞赏。

谢谢!

【问题讨论】:

  • 如果 JSON 源代码位于单独的 JAVA 库项目中,我会收到相同的错误。我将 JSON 类的源代码移动到与主/调用代码相同的项目中,我不再收到错误?

标签: java json arrays


【解决方案1】:

您缺少尾随 ]

【讨论】:

  • +1,但他使用的是 java 而不是 javascript。单引号是字符
  • 哦,好电话。它没有标记 Java/Javascript,而且我一直在 JS 中使用 JSON,所以我假设 JS 呵呵。是否可以反过来做,或者Java会尝试在那里将键解析为字符?完全不相关,但名字很好:)
  • 抱歉,缺少 ] 的错字。我也遇到了同样的错误。
  • 这是一个很好的问题,超出了我有限的知识范围。我认为它会出错,因为双引号是 JSON 的标准。
【解决方案2】:
 String jsonStr =" {\"array\": [{\"name\": \"John Doe\",\"gender\": \"male\",\"age\":40},{\"name\": \"Jane Doe\",\"gender\": \"female\",\"age\": 30 }]}";

这个字符串很好

如果您想验证任何 JSON syntax 数据,这可以帮助您

【讨论】:

  • 根据文档,字符串应以[ 开头并以] 结尾。如果您发布的代码有效,则可能值得提交错误报告或其他内容:)
  • 有趣的是,如何从字符串初始化 JSONObject,而不是 JSONObject 的 JSONArray。
  • 感谢 Nammari,提供链接。如果我从字符串中删除转义字符“\”,JSONLint 会说它是一个有效的 JSON 字符串。
  • 如果我回答你,请在投票区查看我的回答 :) 这样你可以如何感谢 stackoverflow 中的人
  • 我是 stackoverflow 的新手。显然,您需要获得 15 个声望点才能投票。我一有它们就会这样做!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多