繁体   English   中英

node.js + API + Json格式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM