Избегайте двойных кавычек в json-функциях mysql

Я знаю, что это должно быть просто, но я не могу понять, как избежать двойных кавычек в запросе mysql для манипулирования json.

У меня есть следующий пример:

SET @j = '{"4": 1, "0as@x"" : [1, 2, 3, 4], "b": [2, 3]}';

Обратите внимание на двойные кавычки внутри второго ключа: 0as@x"

Если я выполню этот запрос: SELECT JSON_ARRAY_APPEND(@j, '$."0as@x\"', '2');Я получаю следующую ошибку:

Error Code: 3141. Invalid JSON text in argument 1 to function json_array_append: "Missing a colon after a name of object member." at position 16.

Все, что я хочу, это знать, как избежать двойных кавычек внутри имени переменной ключа объекта json.

Я также попытался удвоить цитаты """с двумя обратными слешами \\"...

Не могли бы вы мне помочь?

Спасибо!

Позже РЕДАКТИРОВАТЬ

В операторе set я избежал двойных кавычек с \", Это делается позади, если вы используете JSON_OBJECT,

В конце концов я сбежал с \\ двойные кавычки и это сработало.

Окончательный код, который работает:

SET @j = JSON_OBJECT('4', 1, '0as@x"', '[1, 2, 3, 4]', 'b', '[2, 3]');
SELECT JSON_ARRAY_APPEND(@j, '$."0as@x\\""',  2);

1 ответ

Решение

Используйте функцию JSON_OBJECT для создания объекта следующим образом:

SET @j = JSON_OBJECT('4', 1, '0as@x"', '[1, 2, 3, 4]', 'b', '[2, 3]');

Тогда функция (без лишних кавычек вокруг имени ключа):

SELECT JSON_ARRAY_APPEND(@j, '$.0as@x"',  2);

Надеюсь, это помогло.

Другие вопросы по тегам