Mysql json_array_append удалите ненужные \ и "

У меня в mysql есть этот формат JSON, который хорош:

{"2017": {"1": {"payed": 0, "charge": 0}}}

Теперь мне нужно добавить еще один год, и этот JSON теперь выглядит так:

{"2017": {"1": {"payed": 0, "charge": 0}}, "2018": {"1": {"payed": 0, "charge": 0}}}

Я пробую использовать этот код MySQL:

UPDATE calculation 
SET payment = JSON_ARRAY_APPEND(payment, '$', '{"2018": {"1": {"payed": 0,"charge": 0}}}');

И я получал это:

[{"2017": {"1": {"payed": 0, "charge": 0}}}, "{\"2018\": {\"1\": {\"payed\": 0,\"charge\": 0}}}"]

Итак, вы видите, что у меня есть обратная косая черта \ и мне нужно удалить ее, а также ненужную в начале и в конце », так как удалить ее, чтобы добиться желаемого, это должно выглядеть именно так:

{"2017": {"1": {"payed": 0, "charge": 0}}, "2018": {"1": {"payed": 0, "charge": 0}}}

Пожалуйста, отметьте ответ как принятый, если он послужил цели.

Ayan 11.04.2018 14:31
0
1
504
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно В РОЛЯХ строку как JSON.

Попробуйте это:

UPDATE calculation 
SET payment = JSON_ARRAY_APPEND(payment, '$', CAST('{"2018": {"1": {"payed": 0,"charge": 0}}}' as JSON));

В mariadb надо использовать JSON_COMPACT(x) вместо CAST(x as JSON)github.com/MariaDB/server/commit/…

Dohab 15.09.2019 11:23

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