Избегайте двойных кавычек в 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);
Надеюсь, это помогло.