我需要在我的服务器中用节点js创建一个JSON字符串,以便在请求时发送给客户端.问题是这个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);
我想要的JSON数组创建它取决于一个名为'目标'的哈希,其中一个玩家名称是关键,而一些目标是值.因此,如果只有3个播放器,则JSON阵列只应具有此大小.
我一直在尝试在线创建JSON数组,如下所示:
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}"长度:1
在此先感谢,我真的很挣钱:(
编辑:我现在尝试使用stringy做这个,但没有运气.我做错了什么?
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] } );
});