在NodeJS中parsingJSON对象的数组
我想知道如何parsingNodeJS中的JSON对象的数组?
我想发布JSON数组到服务器,并能够使用接收的数组作为调节器JavaScript数组。
提前致谢。
这是我使用stringify函数将数组转换为string的前端部分
document.getElementById("sendJson").addEventListener("click", function () { $.post("/echo", JSON.stringify(QuestionsArray), function (data) { alert(data); }); })
这是我试图将数组的JSON对象转换为数组的后端部分
app.post('/echo', function (req, res) { var Array = JSON.parse(JSON.stringify(req.toString())); res.end(Array[0]["QuestionText"].toString()); });
这是我试图发送到服务器的数组:
[ { "QuestionText":"What is your Name", "QuestionType":1 }, { "QuestionText":"Where are you from", "QuestionType":2, "ChoiceList":[ "US", "UK" ] }, { "QuestionText":"Are you married", "QuestionType":3, "ChoiceList":[ "Yes", "No" ] } ]
这里是源代码
在你的app.js
:
var bodyParser = require("body-parser"); ... app.use(bodyParser.urlencoded({extended: true}));
那么你可以使用req.body
来获取发布的值:
app.post('/echo', function (req, res) { var Array = req.body.data; res.end(Array[0]["QuestionText"].toString()); });
在前端,不要做任何串联:
$.post("/echo", {data: QuestionsArray}, function (data) { alert(data); });
我会尽力解释这一点。 首先,你在客户端上创build一个jsonstring。
JSON.stringify(QuestionsArray)
然后在服务器上,你又在做同样的事情:
JSON.stringify(req.toString()) // this is not needed
然后你parsing一个javascript对象的double stringifyed jsonstring:
JSON.parse(JSON.stringify(req.toString()))
所以现在你不得不parsing它两次:)。 如果你只是现在就把它在服务器上串起来,然后就打电话:
var arr = JSON.parse(req.toString());
你会得到一个JavaScript对象,你可以像这样访问:
res.end(arr[0].QuestionText.toString());
看看这个jsFiddle并打开你的开发者工具。 在运行时查看控制台,您将看到问题出在哪里: example
您可能实际上直接发送JSON到服务器。
$.ajax({ url: "/echo", type: 'POST', data: JSON.stringify(QuestionsArray), processData: false, contentType: 'application/json' }).success(function (data) { alert(data); });
在node.js中,使用bodyParser.json
来取回它。
app.use(bodyParser.json({})); app.post('/echo', function (req, res) { var array = req.body; res.end(array[0]["QuestionText"].toString()); });
顺便说一下,不要使用Array
作为variables名称,因为Array
表示JavaScript所使用的Array
类,并且您的代码已将其覆盖。