2015-11-25 89 views
1

我的字符串表示字段名和值包含在單引號中的jsons,例如{'name': 'Grzegorz', 'age': 123}。讓我們假設我有也表的Postgres數據庫將包含單引號的字段名的json字符串插入到postgresql中作爲jsonb字段

CREATE TABLE item (
    metadata jsonb 
); 

我試圖插入使用JOOQ行。 JOOQ生成以下語句: insert into Item values('{''name'': ''Grzegorz'', ''age'': 123}'::jsonb);,但拋出一個錯誤:

ERROR: invalid input syntax for type json 
LINE 1: insert into Item values('{''name'': ''Grzegorz'', ''age'': 1... 
Token "'" is invalid. 
JSON data, line 1: {'... 

是否有可能來插入一個單引號括起來'代替雙引號"或者我應該將所有'"名JSON?

在此先感謝!

格熱戈日

+1

'{ '名': '格熱戈日', '年齡':123}'可能是一個有效的JavaScript值,但不是一個有效的[JSON(HTTP:/ /json.org)。盲目地將所有'''轉換爲'''可能是危險的,只要考慮f.ex.'{'name':'Gregor'Grzegorz'','age':123}'(如果這是一個可能的生成值,也可以用javascript解析),而是考慮如何生成這些值並搜索生成* valid * JSON值的方法。 – pozs

回答

2

Json syntax需要雙引號,所以它不是的Postgres的問題。服務器只接受有效的json值。

您可以使用replace()

insert into item 
values(replace('{''name'': ''Grzegorz'', ''age'': 123}', '''', '"')::jsonb); 

select * from item; 

      metadata    
---------------------------------- 
{"age": 123, "name": "Grzegorz"} 
(1 row) 
相關問題