2012-05-15 57 views
1

我安装的Node.js和express.js,我尝试使用:为什么express.js生成JSON.parse错误?

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

但它会导致一个错误:语法错误:意外的令牌0在Object.parse(原生)

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

+1

go with'obj = str;':D – Vytautas

回答

4

您解析ObjectObject

JSON.parse()预计string

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

str是不是字符串,而是一个对象。把整个事情到一个字符串第一,即:

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

var str ='{test:'info'}'; obj = JSON.parse(str);我写,但同样的错误。 – user1144700

+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

+0

谢谢!这项工作! – user1144700

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/

0

您呼叫str的东西实际上已经是一个对象。 JSON是没有必要的,纯JavaScript是所有你需要:

var obj = { test: 'info'}; 

console.log(JSON.stringify(obj)); // JSON output 
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); 
});