首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在节点js中创建JSON数组

在节点js中创建JSON数组
EN

Stack Overflow用户
提问于 2013-12-09 07:47:38
回答 3查看 139.5K关注 0票数 14

我需要在我的服务器中创建一个用node js编写的JSON字符串,当客户端请求它时,该字符串将被发送到客户端。问题是这个JSON依赖于服务器中的可用数据,因此,JSON数组的大小并不总是相同的。我试了一整天,但尽管我觉得离我很近,我还是不明白。

下面是一个查询示例:

代码语言:javascript
运行
复制
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}]};

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

代码语言:javascript
运行
复制
res.contentType('application/json');
res.send(json);

我想要创建的JSON数组依赖于一个名为' goals‘的散列,其中球员名称是关键字,而进球数是值。因此,如果只有3个播放器,JSON数组应该只有这个大小。

我一直在尝试在线创建JSON数组,如下所示:

代码语言:javascript
运行
复制
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

代码语言:javascript
运行
复制
Object {jugadores: Array[1]}

Array1 0:"{诺姆布雷:梅西,戈莱斯:8},{诺姆布雷:罗纳尔多,戈莱斯:16},{诺姆布雷:科斯塔,戈莱斯:10},{诺姆布雷:托奎罗,戈莱斯:0},{诺姆布雷:阿拉比,戈莱斯:2},{诺姆布雷:贝尔,戈莱斯:10},{诺姆布雷:内马尔,戈莱斯:8}“长度:1

提前感谢,我真的很难做到这一点:

编辑:我现在正在尝试stringy这样做,但没有运气。我做错了什么?

代码语言:javascript
运行
复制
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散列:

代码语言:javascript
运行
复制
app.get('/player/:id', function (req, res) {   
res.contentType('application/json');
res.send( {'goals': + goals[req.params.id] } );

});

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-12-09 08:06:26

使用所需的信息构建一个JavaScript数据结构,然后在最后将其转换为json字符串。

根据我认为你正在做的事情,试着这样做:

代码语言:javascript
运行
复制
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));

或者其他类似的东西。

票数 45
EN

Stack Overflow用户

发布于 2013-12-09 07:49:32

您没有JSON。您有一个由对象、数组、一些字符串和一些数字组成的JavaScript数据结构。

使用JSON.stringify(object)将其转换为JSON文本(字符串)。

票数 7
EN

Stack Overflow用户

发布于 2016-07-04 17:03:01

这对我有帮助,

代码语言:javascript
运行
复制
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));
                        }
    });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20460769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档