2017-12-28 10 views
0

row_to_json(row)関数を使用して、データベースにJSONオブジェクトを直接作成したいと考えています。これは期待通りに動作します:手動で行を作成するときにrow_to_jsonの入力に対して、列名を失うことなく行を作成する方法は?

[ 
    {"identifier": 1234, "name": "US"}, 
    {"identifier": 5678, "name": "France"}, 
    .... 
] 

は、しかし、私は列名を失う:

select row_to_json(country) from country 

それはのようなものを返します。たとえば、次のクエリは:

select row_to_json(row(country.identifier, country.name)) from country 

ができます:

[ 
    {"f1": 1234, "f2": "US"}, 
    {"f1": 5678, "f2": "France"}, 
    .... 
] 

この構築物は、カラム名を失います。私は出力にこれらの列名が必要です。 CTEなし、つまり -

with country as (select identifier, name from country) 
select row_to_json(country) from country 

直接これを行う方法があります:

は、私は1つの解決策を見つけましたか?

答えて

1

あなたは、派生テーブルを使用することができます

select row_to_json(t) 
from (
    select identifier, name 
    from country 
) t 

それとも、(json_build_object使用することができますが)それはカラム名を繰り返す必要になります。

select json_build_object('identifier', identifier, 'name', name) 
from country 
+0

私はあまり不器用または反復何かがあった望みました。 .. 残念な。代替案ありがとう! –

関連する問題