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

时间:2012-05-15 06:50:33

标签: json node.js express

我安装了node.js和express.js,我正在尝试使用:

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

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

我该如何解决这个问题?感谢。

6 个答案:

答案 0 :(得分:4)

您将Object解析为Object

JSON.parse()期待string

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

答案 1 :(得分:3)

基本上JSON.parse()需要字符串但你传递的是对象,所以改为:

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

以下是有关JSON https://developer.mozilla.org/en/Using_native_JSON

的有用文档

答案 2 :(得分:1)

str不是字符串,而是对象。首先把整个东西放进一个字符串,即:

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

答案 3 :(得分:1)

express.js无法自行解析JSON对象。尝试使用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);
});

答案 4 :(得分:0)

如果您想创建JSON,则需要使用JSON.stringify

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

如果要将JSON解析为对象,则需要使用parse。 Parse希望您使用有效的JSON。

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

测试您是否使用有效json的简单方法是使用以下内容:http://jsonlint.com/

答案 5 :(得分:0)

您正在调用的事件str实际上已经是一个对象。 JSON不是必需的,只需要纯JavaScript:

var obj = { test: 'info'};
console.log( JSON.stringify(obj) );  // JSON output