JSON位置2处有意外的'符号,导致语法错误。

4

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

在JSON的位置2处,未捕获的语法错误:意外的标记' 在JSON.parse()中

代码:

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

解码后的对象:

[{'inputs':0,'type':'variable'},{'inputD':0,'type':'variable'},{'inputI':0,'type':'variable'},{'paras':0,'type':'variable'},{'headers':0,'type':'variable'},{'menus':0,'type':'variable'},{'lists':0,'type':'variable'},{'divs':0,'type':'variable'},{'links':0,'type':'variable'},{'images':0,'type':'variable'},{'elemName':'{}','type':'object'},{'borders':[],'type':'array'},{'nested':[],'type':'array'},{'ribbons':[],'type':'array'},{'tooltips':[],'type':'array'},{'gradColors':'{}','type':'object'},{'events':'{}','type':'object'},{'sTarget':'{}','type':'object'},{'sMain':'{}','type':'object'},{'orignalStyle':'{}','type':'object'},{'objNewStyle':'{}','type':'object'},{'functions':'{}','type':'object'},{'reverse':'{}','type':'object'},{'reverseFunction':'{}','type':'object'},{'scDetails':'{}','type':'object'}]

注:该文本为IT技术相关内容,涉及到代码和数据结构,因此在翻译时需要保留原有格式。

1
“Encoded”和“decoded”是什么意思?为什么要用单引号替换双引号?原始对象是什么样子的? - user663031
这不是 JSON,因为它只使用双引号。 - RemcoGerlich
4个回答

5

我遇到了同样的错误,@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

JSON.parse({"u1":1000,"u2":1100}) 将是可以的。 - hoogw
JSON.parse({u1:1000,u2:1100}) 失败了。 - hoogw

2
这是一个无效的JSON字符串。它的键和值应该用双引号而不是单引号括起来。因此,当你使用.replace(/"/g, "'")时,你基本上破坏了JSON标准。

一个值可以是双引号中的字符串、数字、true、false、null、对象或数组。这些结构可以嵌套。


请粘贴您要解析的字符串。code[1] 是您粘贴的数组 [{"inp... 吗? - deathangel908
谢谢,它起作用了!对象开头有一个(')。 - Ahmed Nezar

1
一个相关的例子。今天我遇到了同样的错误。以下是一个示例:
正确
JSON.parse( "[1,2,3,4,5,6,7,8,9,0]" )

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

注意这里的三个点(...),因为工具只显示了数组中的几个数字,对于其余的则给出了省略号。

换句话说,传递给JSON.parse()的字符串无效,所以会出错。

但也可能是其他类似的错误。
例如,JSON.parse( "true" )是正确的,但JSON.parse( "tr" )会失败,等等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接