【问题标题】:Unexpected token error while json parsing for string containing special charactersjson 解析包含特殊字符的字符串时出现意外的令牌错误
【发布时间】:2013-08-02 21:02:52
【问题描述】:

在尝试在 Titan Studio for mobile app 项目上解析以下字符串时,我得到了

错误: profileSkills 处出现意外标记":"分析

des='[{"jobId":0,"jobPositionName":"NA","companyId":0,"companyDisplayName":"NA","profileSkills":"Analysis\r\nAnalysis\r\nQuality Assurance\r\nProject Management\r\nProgrammer Analyst\r\n"}]';
desjson=JSON.parse(des);

谁能帮助我,我是否可以使用 JSON 解析包含转义字符的字符串。

如果没有,你能告诉我它的程序吗?

【问题讨论】:

    标签: javascript json titanium


    【解决方案1】:

    字符串中有两个\r\,应该是\r\n。更改这些,它会验证为正确的 JSON。

    【讨论】:

      【解决方案2】:

      您需要使用双反斜杠对特殊字符进行编码,因为 JSON 解析器会期望它们被转义。

      var des='[{"jobId":0,"jobPositionName":"NA","companyId":0,"companyDisplayName":"NA","profileSkills":"Analysis\\r\\nAnalysis\\r\\nQuality Assurance\\r\\nProject Management\\r\\nProgrammer Analyst\\r\\n"}]';
      

      如果您实际上将 JSON string 声明为 JavaScript 字符串文字,那么您必须考虑这样一个事实,即当 JavaScript 解析器看到这些转义字符时,它会构建一个带有真正的回车和换行字符。之后出现的 JSON 解析器不会喜欢它们。

      另一方面,如果您的 JSON 确实来自服务器,那么“在线”上的 JSON 应该有双反斜杠。

      我还应该注意,很少有任何理由将 JSON 字符串作为文字放在 JavaScript 代码中。在大多数情况下,它也可能是 JavaScript 对象字面量。 (当然,我承认这可能是有原因的。)

      【讨论】:

      • 所以我需要将\r和\n分别替换为\\\r和\\\n
      • @PriyankaKotari 是的,但请参阅我对答案的更新。这取决于您的 JSON 字符串来自何处。
      • 谢谢,它使用双反斜杠。好吧,我正在从 Web 服务获取 json。所以,我需要在我的 javascript 文件中将 \ 替换为 \\
      猜你喜欢
      • 2022-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      • 2016-11-14
      • 2014-02-14
      相关资源
      最近更新 更多