url:http://127.0.0.1:3000/flow/save
[{
"mobile": "13444444444",
"mac": "30-3A-64-91-52-98",
"lastRefTime": 1438332288,
"up": 1111,
"down": 222
}]
服务器: app.post('/flow/save', traffic); 怎么获取Json数组
高洛峰2017-04-17 11:58:02
呃,用的是express麼? express的路由的話,可以在第二個參數處理,像這樣:
javascript
app.post('/flow/save', require('body-parser').json(), traffic);
如果你是非框架的話,那麼應當自己接受到req後做處理,大致的流程是這樣
function parseJSON(req,res,next){
var arr = [];
req.on("data",function(data){
arr.push(data);
});
req.on("end",function(){
var data= Buffer.concat(arr).toString(),ret;
try{
var ret = JSON.parse(data);
}catch(err){}
req.body = ret;
next();
})
}
就是簡單的接收內容並且JSON.parse啦
迷茫2017-04-17 11:58:02
用 express 的中間件 body-parser
var app = require('express')();
var bodyParser = require('body-parser');
var multer = require('multer');
app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded
app.use(multer()); // for parsing multipart/form-data
app.post('/', function (req, res) {
console.log(req.body);
res.json(req.body);
})
同源的情況下,我用的是fetch
var json = [{
"mobile": "13444444444",
"mac": "30-3A-64-91-52-98",
"lastRefTime": 1438332288,
"up": 1111,
"down": 222
}];
var data = JSON.stringify(json);
fetch('http://127.0.0.1:3000/flow/save',{
method:'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body:data
})
非同源的情況下要'Content-Type': 'application/x-www-form-urlencoded' 的標準的編碼格式
然後把json 轉換為FormData 物件
就可以正常接收到json
不然 req.body 會一直是 {} 這樣的空物件。
黄舟2017-04-17 11:58:02
json本身就是字串,只是不同語言可以把json字串轉換與自身相適應物件或其他變數類型。
一般都有:
- 把json格式的字串轉換成xx
- 把xx
轉換成json格式的字串
這裡的xx
就是上面的物件或其他變數類型。