为什么express.js生成一个JSON.parse错误?

我安装了node.js和express.js,我试图使用:

var str = { test: 'info'}; obj = JSON.parse(str); 

但它会导致一个错误: SyntaxError:Object.parse上的意外的标记0(本地)

我怎样才能解决这个问题? 谢谢。

你parsingObject

JSON.parse()需要string

 var str = '{"test": "info"}'; obj = JSON.parse(str); 

基本上JSON.parse()期望string,但你传递的对象,所以而是这样做:

 var original = { test: 'info'}; var str = JSON.stringify(original); var restored = JSON.parse(str); 

这里是关于JSON https://developer.mozilla.org/en/Using_native_JSON的有用的文档

str不是一个string,而是一个对象。 把整个事情放在一个string中,即:

 var str = '{ "test": "info"}'; obj = JSON.parse(str); 

express.js无法自行parsingJSON对象。 尝试使用body-parser

 var app = require('express')(); var bodyParser = require('body-parser'); var multer = require('multer'); // v1.0.5 var upload = multer(); // for parsing multipart/form-data app.use(bodyParser.json()); // for parsing application/json app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded app.post('/profile', upload.array(), function (req, res, next) { console.log(req.body); res.json(req.body); }); 

如果你想创buildJSON,你需要使用JSON.stringify

 var thing = { test: 'info' }; var json = JSON.stringify(thing); 

如果你想parsingJSON到一个对象,你需要使用parse 。 Parse期望您使用有效的JSON。

 var json = '{ "test": "info" }'; //Use double quotes for JSON var thing = JSON.parse(json); 

一个简单的方法来testing,如果你使用有效的JSON是使用类似于: http : //jsonlint.com/

你所调用的东西实际上已经是一个对象了。 JSON是没有必要的,纯粹的JavaScript是你所需要的一切:

 var obj = { test: 'info'}; 

 console.log( JSON.stringify(obj) ); // JSON output