Я получаю заключенные в кавычки строковые значения в массиве вместо массива объектов, когда я использую JSON_ARRAY_APPEND () для вставки строки, представляющей объект.
Мне нужен способ принудительно вставить значение, вставленное вмассив, который будет объектом вместо его строкового представления.
Сервер: 10.2.18-MariaDB-log MariaDB Сервер Linux x86_64
Вот пример, который я пытаюсь получить:
set @NewArrayItem = '{"item2": "value2"}';
SELECT JSON_ARRAY_APPEND('{"SomeData": "SomeValue", "AnArray": [{"item1": "value1"}]}', '$.AnArray', @NewArrayItem ) as outval;
Второй элемент в массиве ($ .AnArray [1]) - это строка вместо объекта.
Я ожидаю:
{"SomeData": "SomeValue", "AnArray": [{"item1": "value1"}, {"item2": "value2"}]}
Но я на самом делеget:
{"SomeData": "SomeValue", "AnArray": [{"item1": "value1"}, "{\"item2\": \"value2\"}"]}
Я вижу, что работает следующее, но я ограничен тем, что значение @NewArrayItem является правильно отформатированной строкой из другого приложения:
SELECT JSON_ARRAY_APPEND('{"SomeData": "SomeValue", "AnArray": [{"item1": "value1"}]}', '$.AnArray', JSON_OBJECT('item2','value2') ) as outval;