将字符串转换为JSON对象

时间:2017-02-21 10:40:45

标签: javascript json node.js

我将json分配给变量:

var a = "[{a:123}]";

现在,如果我a[0],则会将结果显示为[。在执行a = JSON.parse(a)时,它会将错误视为Uncaught SyntaxError: Unexpected token a in JSON at position 2

如何将a转换为a = [{a:123}];

2 个答案:

答案 0 :(得分:3)

这里的问题是你没有有效的JSON。

  

未捕获的SyntaxError:位于第2位的JSON中的意外标记a

这个错误抱怨角色" a"这在这里无效。见http://www.json.org/

理论上,您可以使用eval来实现目标,但这是非常不安全的,因为您可以评估字符串中存在的任何代码,因此我不建议这样做。

您必须确保所获得的JSON有效,或者如果无法更改格式,则可能需要在将字符串传递给JSON.parse之前对其进行预处理。

顺便说一句,与此处由于某种原因而被推崇的另一个答案相反,没有Array.parse这样的事情:

$ node -e 'Array.parse()'
[eval]:1
Array.parse()
      ^    
TypeError: Array.parse is not a function

另见:

答案 1 :(得分:0)

你必须替换:

var a = "[{a:123}]";

by:

var a = "[{\"a\":123}]";