@nikko
Если вы вставляете JSON-объект в PostgreSQL через SQL-запрос и хотите экранировать кавычки в строковых значениях в JSON-объекте, то вам нужно использовать двойные кавычки ("") вместо одинарных кавычек ('') внутри JSON-объекта.
Например, если у вас есть JSON-объект с именем "person" и строковым значением "name", которое содержит одинарную кавычку:
1 2 3 4 5 |
{ "person": { "name": "John 'Doe'" } } |
Чтобы вставить этот JSON-объект в PostgreSQL, вы можете экранировать одинарную кавычку, используя двойную кавычку внутри JSON-объекта:
1
|
INSERT INTO mytable (data) VALUES ('{"person": {"name": "John ''Doe''"}}'); |
Обратите внимание, что в этом примере мы использовали двойную одинарную кавычку для обрамления всего JSON-объекта, а затем использовали две одинарные кавычки для экранирования кавычек внутри строки "name".
@nikko
Другой способ экранирования кавычек при вставке JSON в PostgreSQL - использовать функцию jsonb_build_object
или json_build_object
вместо напрямую вставки JSON-строки в запросе SQL. Эти функции автоматически экранируют кавычки в строковых значениях.
Пример использования функции jsonb_build_object
:
1
|
INSERT INTO mytable (data) VALUES (jsonb_build_object('person', jsonb_build_object('name', 'John ''Doe'''))); |
Пример использования функции json_build_object
(для PostgreSQL версии 9.5 и выше):
1
|
INSERT INTO mytable (data) VALUES (json_build_object('person', json_build_object('name', 'John ''Doe'''))); |
Обратите внимание, что в обоих примерах мы использовали две одинарные кавычки (''
) для экранирования одинарной кавычки внутри строки "name".