在节点 js 中创建 JSON 数组
Posted
技术标签:
【中文标题】在节点 js 中创建 JSON 数组【英文标题】:Creating a JSON Array in node js 【发布时间】: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
值的代码部分
Convert JS object to JSON string的可能重复
您应该将对象或数组传递给JSON.stringify
,而不是字符串。
【参考方案1】:
用所需的信息构建一个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));
或类似的东西。
【讨论】:
【参考方案2】:您没有 JSON。你有一个由对象、数组、一些字符串和一些数字组成的 JavaScript 数据结构。
使用JSON.stringify(object)
将其转换为(一串)JSON 文本。
【讨论】:
我尝试创建 JavaScript 数据结构并使用 stringify(请检查我的编辑)但没有运气,我错过了什么? 您正试图通过将表示 JS 文字的字符串粘合在一起来构建您的数据结构。使用实际的文字。【参考方案3】:这个对我有帮助,
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));
);
【讨论】:
以上是关于在节点 js 中创建 JSON 数组的主要内容,如果未能解决你的问题,请参考以下文章
通过 JS 自执行函数在 Head 中创建文本节点时遇到问题
如何使用 json 解析器的 boost property_tree 创建空数组节点
在 C 中创建一个 void toBST 函数,它接受 2 个参数:Tree* root 和一个数组,并将所有树节点添加到一个数组中 - 顺序无关紧要
js中创建html标签加入select下默认的option的value和text删除select元素节点下全部的OPTION节点