'select columns into a json from postgres [duplicate]

i have a table employee like this

name     value 
'e1'     'rahul'
'e2'     'priya'
'e3'     'abhijit'

and i need to extract json from the two columns such that the result is like this

{'e1':'rahul','e2':'priya','e3':'abhijit'}

I've tried the following query and the results is as follows

select row_to_json((name,value)) from employee 

O/P

{'f1':'e1','f2':'rahul'}
{'f2':'e1','f2':'priya'}
{'f3':'e1','f2':'abhijit'}

i don't want the f1 and f2 names over there,please advice!



Solution 1:[1]

SELECT ROW_TO_JSON(a) FROM (SELECT name, value FROM employee) a;

Solution 2:[2]

If I get your question correctly, then, as mentioned here, in Postgres 9.4+ you might use json_build_object():

create temp table employee as (select 'key'::text as name, 'val'::text as value);
select json_build_object(name,value) from employee;

Here is the result:

json_build_object
-------------------
 {"key" : "val"}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Dmitry Umarov
Solution 2 Erwin Brandstetter