Ich möchte die Ergebnistabelle in MySQL in ein JSON-Array konvertieren, wobei vorzugsweise nur einfache MySQL-Befehle verwendet werden. Zum Beispiel mit Abfrage
SELECT name, phone FROM person;
| name | phone |
| Jack | 12345 |
| John | 23455 |
die erwartete JSON-Ausgabe wäre
[
{
"name": "Jack",
"phone": 12345
},
{
"name": "John",
"phone": 23455
}
]
Gibt es eine Möglichkeit, dies in einfachem MySQL zu tun?
BEARBEITEN:
Es gibt einige Antworten, wie dies mit z. MySQL und PHP , aber ich konnte keine reine MySQL-Lösung finden.
Sie können json_object verwenden, um Zeilen als JSON-Objekte abzurufen.
SELECT json_object('name', name, 'phone', phone)
FROM person;
Dies setzt sie nicht in ein Array oder Kommas zwischen ihnen. Sie müssen das im Code tun, der sie abruft.
Mit Hilfe von @Schwern ist es mir gelungen, diese Abfrage zu stellen, was anscheinend funktioniert!
SELECT CONCAT(
'[',
GROUP_CONCAT(JSON_OBJECT('name', name, 'phone', phone)),
']'
)
FROM person;
Wenn Sie Ihre Abfragen in der Konsole ausführen (wie Sie in einem der Kommentare sagen), installieren Sie MySql Shell und Sie können die Ergebnisse der Abfragen als json ausgeben.
Es gibt zwei "group by" -Funktionen für JSON mit dem Namen json_arrayagg, json_objectagg.
Dieses Problem kann gelöst werden mit:
SELECT json_arrayagg(
json_merge(
json_object('name', name),
json_object('phone', phone)
)
) FROM person;
Dies erfordert MySQL 5.7 und höher.