Избегайте двойных кавычек в функциях 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);

person cristighr    schedule 03.11.2017    source источник


Ответы (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);

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

person p-a-o-l-o    schedule 03.11.2017
comment
код генерирует ошибку... я думаю, что вы не можете начинать имя переменной с цифры, я пробовал, хотя SELECT JSON_ARRAY_APPEND(@j, '$."0as@x\\""', 2); и это сработало - person cristighr; 06.11.2017
comment
хорошо, да, ваш ответ заставил меня подумать, что json_object экранирует символы, и поэтому мой первоначальный набор делал что-то отличное от того, что я ожидал. Большое спасибо! - person cristighr; 06.11.2017