生成的json对象,用express发送post请求到服务端,JSON.stringify后保存到服务器后数据格式变得很奇怪?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了生成的json对象,用express发送post请求到服务端,JSON.stringify后保存到服务器后数据格式变得很奇怪?相关的知识,希望对你有一定的参考价值。
因为是要从unity发布webgl后发送数据到页面再上传服务器,总是无法生成工程,最后把所有要发送的数据打包成一个大字符串后才顺利生成。然后html上主要就是把字符串分解一下。其中Parameter实验参数是个嵌套对象,因为参数数量和名称可能不固定。
我设想的应该是生成一个这样的json
"ExperimentName": "ABCD Experiment",
"Parameter":
"P1": "1",
"P2": "2",
"P3": "3",
"P4": "4"
"xlabel": "XlabelName",
"ylabel": "YlabelName",
"Xdata": [
"1"
"2"
],
"Ydata": [
"1"
"2"
]
但服务器端保存的却是这样的···
"ExperimentName": "ABCD Experiment",
"Parameter[p1]": "1",
"Parameter[p2]": "2",
"Parameter[p3]": "3",
"Parameter[p4]": "4",
"xlabel": "xlabel",
"ylabel": "ylabel",
"xData[]": [
"1",
"2"
],
"yData[]": [
"1",
"2"
]
不知道问题出在哪,下面是代码
//页面代码
function sendToServer(expInfoStr)
var expInfo = expInfoStr.split('#');
sendJson = ;
sendJson.experimentName = expInfo[0];
sendJson.experimentParam = ;
var paramName = expInfo[1].split(',');
var paramValue = expInfo[2].split(',');
for(let i=0; i<paramValue.length; i++)
sendJson.experimentParam[paramName[i]] = parseFloat(paramValue[i]);
sendJson.xlabel = expInfo[3];
sendJson.ylabel = expInfo[4];
var xD = expInfo[5].split(',');
var yD = expInfo[6].split(',');
sendJson.xData = [];
sendJson.yData = [];
for(let i=0; i<xD.length; i++)
sendJson.xData.push(parseFloat(xD[i]));
for(let i=0; i<yD.length; i++)
sendJson.yData.push(parseFloat(yD[i]));
$.post("http://localhost:8000/saveJSON",sendJson,function(data, status)
alert("Data: " + data + "\nStatus: " + status);
);
服务器端node.js
var fs= require('fs');
var express = require('express');
var bodyParser = require('body-parser');
var app = express();
// bodyParser.urlencoded解析form表单提交的数据
app.use(bodyParser.urlencoded(extended: false));
// bodyParser.json解析json数据格式的
app.use(bodyParser.json());
app.post('/saveJSON',function(req, res)
// 对象转换为字符串
var str_json = JSON.stringify(req.body, null, 4);
fs.writeFile('mydata.json', str_json, 'utf8', function()
// 保存完成后的回调函数
console.log("保存完成");
);
);
app.listen(8000);
sendJson.experimentParam[paramName[i]] = parseFloat(paramValue[i]);应该是
sendJson.experimentParam.paramName[i]= parseFloat(paramValue[i]);
xData也是,存的格式是对象的不能用push
以上是关于生成的json对象,用express发送post请求到服务端,JSON.stringify后保存到服务器后数据格式变得很奇怪?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 express node.js POST 请求中接收 JSON?