json解析包含特殊字符的字符串时出现意外的令牌错误

时间:2013-08-01 19:11:04

标签: javascript json titanium

在试图解析钛工作室移动应用程序项目中的以下字符串时,我得到了

错误: 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解析包含转义字符的字符串。

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

2 个答案:

答案 0 :(得分:0)

您需要使用双反斜杠对特殊字符进行编码,因为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 字符串声明为JavaScript字符串文字,那么您必须考虑到当JavaScript解析器看到这些转义字符时,它将构建一个字符串真实回车符和换行符。之后出现的JSON解析器将不喜欢它们。

另一方面,如果你的JSON真的来自服务器,那么“线上”的JSON应加倍反斜杠。

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

答案 1 :(得分:0)

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