在节点js中创build一个JSON数组

我需要在我的服务器中创build一个JSONstring写在节点js发送到客户端,当这个请求它。 问题是这个JSON依赖于服务器中可用的数据,因此JSON数组的大小总是不一样的。 我一整天都在努力,但是虽然我感觉很近,但我还是不明白。

以下是一个示例查询:

json={"players":[ {"name":"Messi", "goals":8}, {"name":"Ronaldo", "goals":22}, {"name":"Costa", "goals":20}, {"name":"Neymar", "goals":13}, {"name":"Arabi", "goals":6}, {"name":"Bale", "goals":3}, {"name":"Toquero", "goals":0}]}; 

我会通过以下方式将它发送到服务器:

 res.contentType('application/json'); res.send(json); 

我想要创build的JSON数组取决于名为“目标”的散列,其中玩家名称是关键字,目标数量是值。 因此,如果只有3个玩家,那么JSON数组只能有这个大小。

我一直在尝试像这样在线创buildJSON数组:

 result= ""; for(i in goals){ result = result+ '{ name:' + i + ", goals:" + goals[i] + '},'; } result= result.substring(0, result.length - 1); res.contentType('application/json'); res.send( { 'players': [ result]}); 

但是,客户端只收到一个大小为1的json

 Object {jugadores: Array[1]} 

jugadores:Array [1] 0:“{nombre:Messi,goles:8} {nombre:Ronaldo,goles:16} {nombre:Costa,goles:10} {nombre:Toquero,goles:0},{ nombre:Arabi,goles:2},{nombre:Bale,goles:10},{nombre:Neymar,goles:8}“length:1

在此先感谢,我真的很努力:

编辑:我现在试着用粘性做这个,但没有运气。 我做错了什么?

 result= "players:["; for(i in goals){ result= result+ '{ name:' + i + ", goals:" + goals[i] + '},'; } result= result.substring(0, resultado.length - 1); result= result + ']' res.contentType('application/json'); myJSONstring = JSON.stringify(resultado); res.send(myJSONstring); 

目标哈希使用GET填充:

 app.get('/player/:id', function (req, res) { res.contentType('application/json'); res.send( {'goals': + goals[req.params.id] } ); 

});

用所需的信息构build一个JavaScript数据结构,然后把它变成最后的jsonstring。

基于我认为你在做什么,尝试这样的事情:

 var result = []; for (var name in goals) { if (goals.hasOwnProperty(name)) { result.push({name: name, goals: goals[name]}); } } res.contentType('application/json'); res.send(JSON.stringify(result)); 

或类似的规定。

你没有JSON。 您有一个由对象,数组,一些string和一些数字组成的JavaScript数据结构。

使用JSON.stringify(object)将其变成(一串)JSON文本。

这个帮了我,

 res.format({ json:function(){ var responseData = {}; responseData['status'] = 200; responseData['outputPath'] = outputDirectoryPath; responseData['sourcePath'] = url; responseData['message'] = 'Scraping of requested resource initiated.'; responseData['logfile'] = logFileName; res.json(JSON.stringify(responseData)); } });