我安装了node.js和express.js,我正在尝试使用:
var str = { test: 'info'};
obj = JSON.parse(str);
但它会导致错误: SyntaxError:Object.parse(native)上的意外标记0
我该如何解决这个问题?感谢。
答案 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