【发布时间】:2013-05-11 23:36:31
【问题描述】:
所以,我从客户端接收一些 JSON 数据到我的 Node.JS 服务器。我想使用 Mongoose 将该 json 插入到我的 MongoDB 实例中。
我可以按原样插入 JSON,而且效果很好,因为它只是文本。但是,我想在插入之前对其进行解析,以便稍后提取它时,它会变得非常整洁。
所以,这行得通:
wordStream.words.push(wordData);
这不是:
wordStream.words.push(JSON.parse(wordData));
那么,我是否应该在插入之前解析 JSON?
-
如果我应该解析 JSON,我该如何做而不抛出错误?我相信,在解析之前,我需要将所有内容都放在双引号“”中,但是由于某种原因,每当我用双引号创建一个字符串并对其进行解析时,一切都会出错。
这是 JSON:
{ word: 'bundle',
definitions:
[ { definition: 'A group of objects held together by wrapping or tying.',
partOfSpeech: 'noun' } ],
urlSource: 'testurl',
otherSource: '' }
当我尝试解析时的错误
/Users/spence450/Documents/development/wordly-dev/wordly-server/node_modules/mongoose/lib/utils.js:409
throw err;
^
SyntaxError: Unexpected token o
想法?
【问题讨论】:
-
您的 json 字符串中的任何
\t,\n。可能是? -
根据JSON.parse docs“如果要解析的字符串不是有效的JSON,就会抛出SyntaxError异常。”而关于
SyntaxError: Unexpected token o似乎你明白了,因为'o' char 是[object Object] 的第一个字符 - 对象默认字符串表示。试试console.log(JSON.parse({"t":"3"}));你会得到同样的错误。所以这里似乎解析出错了。 -
你从哪里得到那个 JSON?为什么不用双引号(属性和值)引用它?
-
好吧,我在这里肯定很困惑。为什么 console.log(JSON.parse({"t":"3"})) 解析不正确?我可以使用 json.org 上的 JSON 状态机发誓这是正确的语法!