2017-02-16 35 views
0

我在尝试阅读PostgreSQL表中的json列时遇到问题。以下是表格说明。Json postgresql 9.4

task=# \d quots           
     Table "public.quots" 
     Column  | Type | Modifiers 
------------------+---------+----------- 
items   | json | 
id    | integer | 
supplier_id  | integer | 

以下是表中的数据。

select items from quots limit 1; 
                items 
----------------------------------------------------------------------------------------------------------------------------------- 
[{"item1":[{"id":5,"name":"Item Name","unitPrice":{"original":10.0,"converted":10.0}}],"item2":{"id":75,"name":"Name"},"id":23653}] 

现在,当我尝试查询并获取item1时,它返回空。

select items->'item1' from quots limit 1; 
?column? 
---------- 

(1 row) 

任何线索?

的PostgreSQL 9.4.4 PSQL 9.4.4

回答

1

JSON的值是一个数组。您可以使用items->0选择其第一个元素:

select items->0->'item1' from quots limit 1; 

            ?column?         
------------------------------------------------------------------------------ 
[{"id":5,"name":"Item Name","unitPrice":{"original":10.0,"converted":10.0}}] 
(1 row) 
+0

谢谢,它的工作。 upvoted并被标记为接受。再次感谢您的及时回应。 – sharafjaffri

+0

当我尝试使用array_to_json(items-> 0 - >'item1')时,它会返回。错误:无法将数组解析为对象 – sharafjaffri

+0

我无法在没有看到上下文的情况下帮助您。询问包含导致错误的数据的新问题。 – klin