2017-12-28 4 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

당신은 파생 테이블을 사용할 수 있습니다

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

내가 적은 서투른 또는 반복적 인 일이 있었다 희망했다. .. 너무 나빴어. 대안을 가져 주셔서 감사합니다! –

관련 문제