[英]node.js + API + Json formatting
我正在使用node.js + postgis开发Rest API,因为我的问题是格式化结果
考虑我的数据库如下所示:
name key value
xxxxxx population 232
xxxxxx marginal 24
yyyyyy population 6372
yyyyyy marginal 566
我想要的输出如下:
[{
name:xxxx
key:population
value:232
key:marginal
value:24
},
{
name:yyyyy
key:population
value:6372
key:marginal
value:566
}]
我正在执行以下查询:
SELECT name, key, value
FROM map70
WHERE key in ('population', 'marginal')
GROUP BY
name, key, value
但是我得到的输出如下:
[{
name:xxxx
key:population
value:232
},
{
name:xxxx
key:marginal
value:24
},
{
name:yyyyy
key:population
value:6372
},
{
name:yyyy
key:marginal
value:566
}
]
我怎样才能得到想要的输出。.帮助我解决这个问题。谢谢。
您无法获得所需的输出。
[{
name:xxxx
key:population
value:232
key:marginal
value:24
},
{
name:yyyyy
key:population
value:6372
key:marginal
value:566
}]
在JavaScript和通常所有的哈希表中,不能有多个具有相同名称的键。
您想要的是这样的:
[{
"name":"xxxx",
"population": 232,
"marginal": 24
},
{
"name":"yyyyy",
"population": 6372,
"marginal": 566
}]
或类似这样的东西:
[{
"name":"xxxx",
"keys": [
["population", 232],
["marginal", 24]
]
},
{
"name":"yyyyy",
"keys": [
["population", 6372],
["marginal", 566]
]
}]
要获得第二个输出,请遍历所有结果。 您需要某种收集,您可以在其中保存输出所需的对象。 对于每一行,检查是否已经创建了一个对象。 如果不创建,则在“键”数组中添加一个。
obj.keys.push([current.key, current.value]);
然后,当您完成每个对象的处理后,您应该能够从js对象中转储一个json。
json中不允许使用重复键,因此大多数json解析器均不支持您要求的内容。
但是您可以编写自己的json格式化程序以执行所需的操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.