Как экранировать кавычки при вставке json в postgresql?

Пользователь

от nikko , в категории: SQL , 2 года назад

Как экранировать кавычки при вставке json в postgresql?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от elda , 2 года назад

@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".

Пользователь

от aubree , год назад

@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".