我安装了 node.js 和 express.js,我正在尝试使用:
var str = { test: 'info'};
obj = JSON.parse(str);
但它会导致错误:SyntaxError: Unexpected token 0 at Object.parse (native)
我怎样才能解决这个问题?谢谢。
你解析Object
到Object
?
JSON.parse()
期望string
:
var str = '{"test": "info"}';
obj = JSON.parse(str);
基本上 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
str 不是字符串,而是对象。首先将整个东西放入一个字符串中,即:
var str = '{ "test": "info"}';
obj = JSON.parse(str);
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);
});
如果要创建 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/
你调用的东西str
实际上已经是一个对象。JSON 不是必需的,您只需要纯 JavaScript:
var obj = { test: 'info'};
console.log( JSON.stringify(obj) ); // JSON output