经过验证的JSON抛出SyntaxError:属性必须是字符串文字

问题描述

我有一个经过验证的JSON,可以将其放入应用程序中,但是一旦选择了与JSON相关的项目,应用程序就会进入永久的“加载”周期。

我收到的错误songcode.songwriter name = new songcode.songwriter();

这是我经过验证的JSON:


name.Requesting_check();
for(int i = 0; i<200; i++){
    name.Adding_song();
}       

这是我用来获取显示在数据中的代码

name.Requesting_check();
for(int i = 0; i<200; i++){
    name.Adding_song();
}       

我能够获取数据并显示其他相同的JSON,但由于某种原因,它引发了此错误

编辑:我正在使用其他API,且这些API的值中都包含HTML标记,并且这些API的运行情况都很好。

解决方法

您的JSON字符串包含转义的双引号:<a href=\"/parks/lakeside\">
一旦JSON代码被Javascript解释为字符串,转义的“迷路”。字符串中的转义引号变成普通引号:

console.log('a text with \"quotes\".') // --> logs 'a text with "quotes"'.

因此,在您的情况下,JSON.parse()看到的实际字符串会导致解析错误,就像:

'{ "lodges_description": "<a href="/parks/lakeside">" },...'

您需要转义转义字符,以便Javascript知道您要将实际的反斜杠字符传递给JSON.parse()函数:

console.log('a text with \\"quotes\\".') // --> logs 'a text with \"quotes\"'.
,

原来有一个与我正在使用的通道的关系API,其中包含一个额外的逗号。 :D

此问题已结束。