2013-08-07 58 views
4

發出以下:Postgres的陣列避免對PostgreSQL的9.2鑄造

CREATE TABLE test (j JSON, ja JSON[]); 
INSERT INTO test (j) VALUES('{"name":"Alex", "age":20}'); -- Works FINE 
INSERT INTO test (ja) VALUES(ARRAY['{"name":"Alex", "age":20}', '{"name":"Peter", "age":24}']); -- Returns ERROR 

第一插入正常工作。 第二插入返回錯誤:列「JA」是類型JSON [],但表達的類型是文本的[]

我可以投型,以防止錯誤:

INSERT INTO test(ja) VALUES(CAST (ARRAY['{"name":"Alex", "age":20}', '{"name":"Peter", "age":24}'] as JSON[])); -- Works FINE 

我的問題是如果有辦法避免施法?

回答

10
insert into test(ja) values 
('{"{\"name\":\"alex\", \"age\":20}", "{\"name\":\"peter\", \"age\":24}"}'); 

爲了避免混淆投轉義每個字符串:

insert into test(ja) values 
(array['{"name":"alex", "age":20}'::json, '{"name":"peter", "age":24}'::json]); 

或者只投數組本身:

insert into test (ja) values 
(array['{"name":"alex", "age":20}', '{"name":"peter", "age":24}']::json[]); 
+0

感謝您的答覆,尤其是第二種形式。 – rlib