【问题标题】:Passing JSON result to JSONObject or String Constructor将 JSON 结果传递给 JSONObject 或 String 构造函数
【发布时间】:2016-01-30 11:28:07
【问题描述】:

以下是我的 JSON 的结果:

{"imageSignature":"","serviceAmount":"0","regionCode":"SG","MCPTID":"90","brandName":"MasterCard"}

现在,当我尝试传递给 JSONObject 时,它给出了语法错误(“令牌上的语法错误,删除这些令牌”):

JSONObject json = new JSONObject("{"imageSignature":"","serviceAmount":"0","regionCode":"SG","MCPTID":"90","brandName":"MasterCard"}");

当我手动进行 ESCAPE 时效果很好:

JSONObject json = new JSONObject("{\"imageSignature\":\"\",\"serviceAmount\":\"0\",\"regionCode\":\"SG\",\"MCPTID\":\"90\",\"brandName\":\"MasterCard\"}");

所以请有人告诉我如何将其传递给 JSONObject() .??

【问题讨论】:

  • 为什么在源代码中需要 JSON 字符串?最好把它放在一个文件中。
  • 我仍然不明白 JSON result 需要如何硬编码(在源或资源中)。这个String不是之前操作的结果吗?
  • @user2888996 JSON 结果是什么意思?
  • 我正在编写使用 JSON 数据并解析它的 Util 类。我的数据是:{ "imageSignature": "", "serviceAmount": "0" }

标签: java json


【解决方案1】:

现在,当我尝试传递给 JSONObject 时,它给出了语法错误(“语法 令牌错误,删除这些令牌”):

当你在java中手动创建String constant时,你必须对双引号进行转义。

当我手动进行 ESCAPE 时效果很好:

用反斜杠转义双引号是唯一的方法 在java中。

您也可以将字符串存储在某个文件中并读取并通过string object to JsonObject constructor

所以请有人告诉我如何将其传递给 JSONObject()

用反斜杠转义双引号是正确的做法

【讨论】:

  • 黑斜线的替代方法:在字符串文字中使用单引号,然后在其上调用replace(假设文字本身没有单引号)。
  • @Thilo 虽然相同,但是人名和其他文本可能包含单引号,为了更安全,我们可以使用上面的。 :)
  • @ankur-singhal 我必须将 JSON 结果保存到文件中然后读取.??
  • 另外,单引号需要引用自身(在替换中)。可以使用*replace('*', '"')。使用文字,您知道什么字符是“未使用的”。但最好像你说的那样放在一个文本文件中。
  • @user2888996 然后将其放入文本文件中,读取并将string object 传递给JsonObject 构造函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多