在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类,并且您的代码已将其覆盖。