2014-03-06 65 views
0

我開發如何使用Node.js + postgis.In,我的問題是,在格式化結果的REST API的node.js + API + Json的格式

考慮我的DB的樣子如下:

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 
} 
] 

我怎麼能有我want..Help我解決this.Thanks提前輸出。

回答

0

json中不允許使用重複鍵,因此大多數json解析器都不支持您提出的問題。

但是你可以編寫自己的json格式化程序來做你想做的事情。

1

你不能有你想要的輸出。

[{ 
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] 
] 
}] 

要獲得第二輸出,遍歷所有的結果。您需要某種集合,您可以在其中保存輸出所需的對象。對於每一行,檢查是否已經創建了一個對象。如果沒有創建一個,如果有一個添加到「keys」數組。

obj.keys.push([current.key, current.value]); 

然後,當你完成處理每個對象時,你應該能夠從js對象中轉儲一個json。

+0

感謝@LoïcFaure-Lacroix爲您提供寶貴的時間..我必須做些什麼來獲得您的第二個輸出..指導我獲得輸出.. – Subburaj

+0

它應該很容易弄清楚。 –

+0

請指導我做到這一點..也不需要改變我的表格格式。 – Subburaj