从postgres

时间:2016-02-02 13:05:54

标签: json postgresql

我有一个像这样的表员工

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

我需要从两列中提取json,结果就像这样

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

我尝试了以下查询,结果如下

select row_to_json((name,value)) from employee 

O/P

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

我不希望那里的f1和f2名称,请咨询!

3 个答案:

答案 0 :(得分:3)

感谢输入人员,但我发现我必须将postgresql从9.3升级到9.4 以获得函数 json_build_object 。来完成工作对查询结构的一些更改。

select json_agg(json_build_object(name,value)) from employee;

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

如果我正确地提出了您的问题,那么,如上所述[{3}},在postgres 9.4+中,您可以使用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;

结果如下:

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