未捕获的SyntaxError:意外的令牌'在JSON的第2位

时间:2017-07-01 12:03:09

标签: javascript json

我已经存储在数据库中的编码的字符串化JSON对象,我解码并加载它并尝试将其解析为一个对象但我得到了

  

Uncaught SyntaxError:意外的令牌'在JSON的第2位       在JSON.parse()

代码:

var attr = new Object();
attr = JSON.parse(code[1].replace(/"/g, "'"));

对象解码:

  

[{'输入':0,'类型':'可变'},{' inputD':0,&#39 ;类型':'可变'},{' inputI':0,'类型':'可变'},{&# 39;第':0,'类型':'可变'},{'头':0,'类型':& #39;可变'},{'菜单':0,'类型':'可变'},{'列表&#39 ;: 0,'类型':'可变'},{' div的':0,'类型':'可变' },{'链接':0,'类型':'可变'},{'图像':0,'类型& #39;:'可变'},{' elemName':' {}''类型':'对象&# 39;},{'边界':[],'类型':'阵列'},{'嵌套':[],& #39;类型':'阵列'},{'色带':[],'类型':'阵列'}, {'提示':[],'类型':'阵列'},{' gradColors':' {}&# 39;,'类型':'对象'},{'事件':' {}''类型&#39 ;:'对象'},{' sTarget':' {}','类型':'对象'},{' SMAIN':' {}''类型':'对象& #39;},{' orignalStyle':' {}''类型':'对象'},{' objNewStyle':' {}''类型':'对象'},{'功能':' { }''类型':'对象'},{'反向':' {}','类型':'对象'},{' reverseFunction':' {}''类型':'对象& #39;},{' scDetails':' {}''类型':'对象'}]

4 个答案:

答案 0 :(得分:2)

JSON应该用双引号括起来,如:
{"输入":0,"输入":"变量"}

这是一个有用的验证工具:
https://jsonformatter.curiousconcept.com/

答案 1 :(得分:1)

这是not valid json字符串。它的值和键应该用双引号(不是单引号)包围。因此,当你执行.replace(/"/g, "'")时,你基本上违反了JSON标准。

  

值可以是双引号中的字符串,也可以是数字,或者是真或   false或null,或对象或数组。这些结构可以   嵌套。

答案 2 :(得分:0)

我有同样的错误,@ Philipp Zitzmann是对的。 您必须在https://jsonformatter.curiousconcept.com/

处有效的json字符串

有效的json字符串必须有双引号。

JSON.parse({"u1":1000,"u2":1100})       // will be ok

没有报价导致错误

JSON.parse({u1:1000,u2:1100})    
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2

单引号导致错误

JSON.parse({'u1':1000,'u2':1100})    
// error Uncaught SyntaxError: Unexpected token u in JSON at position 2

答案 3 :(得分:0)

一个相关的。今天我遇到了同样的错误。下面是一个示例:

正确

JSON.parse( "[1,2,3,4,5,6,7,8,9,0]" )

不正确

JSON.parse( "[1,2,3,4,5,6,7,8,..." )

请注意3个点(...),因为工具仅显示数组中的几个数字,并给出...作为休止符。

换句话说,传递给JSON.parse()的字符串无效,因此给出了错误。

但这可能是任何其他类似的错误。

例如,JSON.parse( "true" )是正确的,但JSON.parse( "tr" )失败,等等。