NodeJS JSON.parse抛出错误

时间:2016-01-07 08:10:23

标签: javascript json node.js

我只是在node.js中使用JSON.parse来获取十六进制id的数组

'["5682940386289d593130ed98","568293fe86289d593130ed97","568293f486289d593130ed96"]'

收到错误,

  

SyntaxError:意外的标记'。

即使我尝试将数组传递为:

'[5682940386289d593130ed98,568293fe86289d593130ed97,568293f486289d593130ed96]'

它会抛出错误,

  

SyntaxError:意外的令牌d。

理解奇怪的行为。有人建议我在哪里可以阅读相同的内容。

1 个答案:

答案 0 :(得分:2)

你的字符串以'出于某种原因开始和结束,实际上看起来像这样:

// run this snippet
// to see the error
var str = '\'["5682940386289d593130ed98","568293fe86289d593130ed97","568293f486289d593130ed96"]\'';
try {
  JSON.parse(str);
} catch (err) {
  console.log(err);
  snippet.log(err.stack);
}
<script src="https://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

我不知道您是如何构建/获取此字符串的,但您可以使用以下代码删除结尾并从中开始:

var str = '\'["5682940386289d593130ed98","568293fe86289d593130ed97","568293f486289d593130ed96"]\'';
str = str.replace(/^'|'$/g, ''); // remove ' before parsing
var obj = JSON.parse(str);
snippet.log(JSON.stringify(obj));
<script src="https://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>