我需要在我的服务器中创建一个用node 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]}Array1 0:"{诺姆布雷:梅西,戈莱斯:8},{诺姆布雷:罗纳尔多,戈莱斯:16},{诺姆布雷:科斯塔,戈莱斯:10},{诺姆布雷:托奎罗,戈莱斯:0},{诺姆布雷:阿拉比,戈莱斯:2},{诺姆布雷:贝尔,戈莱斯:10},{诺姆布雷:内马尔,戈莱斯: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填充Goals散列:
app.get('/player/:id', function (req, res) {
res.contentType('application/json');
res.send( {'goals': + goals[req.params.id] } );});
发布于 2013-12-09 08:06:26
使用所需的信息构建一个JavaScript数据结构,然后在最后将其转换为json字符串。
根据我认为你正在做的事情,试着这样做:
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));或者其他类似的东西。
发布于 2013-12-09 07:49:32
您没有JSON。您有一个由对象、数组、一些字符串和一些数字组成的JavaScript数据结构。
使用JSON.stringify(object)将其转换为JSON文本(字符串)。
发布于 2016-07-04 17:03:01
这对我有帮助,
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));
}
});https://stackoverflow.com/questions/20460769
复制相似问题