【发布时间】:2013-12-25 23:32:10
【问题描述】:
我需要在我的服务器中创建一个用节点 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 数组依赖于一个名为“goals”的散列,其中玩家姓名是键,目标数是值。因此,如果只有 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:数组[1] 0:“{ nombre:Messi, goles:8},{ nombre:C罗, goles:16},{ nombre:Costa, goles:10},{ nombre:Toquero, goles:0},{ nombre:Arabi, goles: 2},{ 名词:贝尔, goles:10},{ 名词:内马尔, 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] } );
});
【问题讨论】:
-
使用 res.send(JSON.stringify(players)) 并摆脱循环和结果变量。
-
怎么样?我的意思是,如果我摆脱循环,我就不会获得我想要发送的信息。
-
您能否显示设置
goals值的代码部分 -
您应该将对象或数组传递给
JSON.stringify,而不是字符串。
标签: javascript arrays json node.js