2012-05-15 54 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); 
});