У меня есть таблица:

 -------+-------
| param | value |
|-------+-------|
|     A |  200.5|
|     B |   70.2|
 ---------------

Когда я выполняю:

select json_object(`param`, `value`) from `table`

Я получаю это:

{"A": "200.5"}
{"B": "70.2"}

Но я хочу этого:

{
 "A": "200.5",
 "B": "70.2"
}
1
iMarh 25 Ноя 2019 в 17:47

2 ответа

Лучший ответ

Вы можете использовать агрегатную функцию json {{ X0}}, доступно с MySQL 5.7:

select json_objectagg(param, value) js from mytable

Демонстрация DB Fiddle :

| js                      |
| :---------------------- |
| {"A": 200.5, "B": 70.2} |

В более ранних версиях, где агрегатные функции json недоступны, вы можете выполнить конкатенацию строк:

select concat('{', group_concat('"', param, '": ', value separator ', '), '}') js
from mytable

Демонстрация DB Fiddle

1
GMB 25 Ноя 2019 в 15:00

Я предполагаю, что вы не хотите получать этот результат непосредственно с сервера MySQL, в этом случае наиболее близким к ответу является следующий Как преобразовать таблицу результатов в массив JSON в MySQL.

Если вы согласны с дальнейшими результатами, вы всегда можете проанализировать их на выбранном вами языке.

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

0
Adrian Soomro 25 Ноя 2019 в 14:57