Heim >Datenbank >MySQL-Tutorial >Wie generiert man verschachtelte JSON-Objekte aus relationalen Tabellen in MySQL mithilfe nativer JSON-Funktionen?

Wie generiert man verschachtelte JSON-Objekte aus relationalen Tabellen in MySQL mithilfe nativer JSON-Funktionen?

DDD
DDDOriginal
2024-12-01 21:50:13249Durchsuche

How to Generate Nested JSON Objects from Relational Tables in MySQL Using Native JSON Functions?

Generieren verschachtelter JSON-Objekte in MySQL mit nativen JSON-Funktionen

Die nativen JSON-Funktionen von MySQL bieten einen leistungsstarken Mechanismus für die Arbeit mit JSON-Daten in der Datenbank . Beim Umgang mit relationalen Tabellen mit Eins-zu-vielen-Beziehungen kann die Generierung verschachtelter JSON-Objekte eine Herausforderung darstellen. In diesem Artikel untersuchen wir, wie man verschachtelte JSON-Objekte mithilfe der nativen JSON-Funktionen von MySQL erreicht.

Das Problem

Stellen Sie sich das folgende Szenario vor:

CREATE TABLE `parent_table` (
   `id` int(11) NOT NULL,
   `desc` varchar(20) NOT NULL,
   PRIMARY KEY (`id`)
);
CREATE TABLE `child_table` (
   `id` int(11) NOT NULL,
   `parent_id` int(11) NOT NULL,
   `desc` varchar(20) NOT NULL,
   PRIMARY KEY (`id`,`parent_id`)
);
insert `parent_table` values (1,'parent row 1');
insert `child_table` values (1,1,'child row 1');
insert `child_table` values (2,1,'child row 2');

Das Ziel besteht darin, ein JSON-Dokument zu generieren, das dem ähnelt Folgendes:

[
    {
        "id" : 1,
        "desc" : "parent row 1",
        "child_objects" : [{
                "id" : 1,
                "parent_id" : 1,
                "desc" : "child row 1"
            }, {
                "id" : 2,
                "parent_id" : 1,
                "desc" : "child row 2"
            }
        ]
    }
]

Die Lösung

Der Schlüssel zum Generieren verschachtelter JSON-Objekte liegt in der Funktion GROUP_CONCAT. Durch die Kombination der Funktion GROUP_CONCAT mit der Funktion JSON_OBJECT können wir mehrere JSON-Objekte in einem einzigen Array verketten.

Betrachten Sie die folgende Abfrage:

select json_object(
  'id',p.id 
 ,'desc',p.`desc`
 ,'child_objects',(select CAST(CONCAT('[',
                GROUP_CONCAT(
                  JSON_OBJECT(
                    'id',id,'parent_id',parent_id,'desc',`desc`)),
                ']')
         AS JSON) from child_table where parent_id = p.id)

 ) from parent_table p;

Diese Abfrage generiert das gewünschte verschachtelte JSON-Objekt von Verwenden Sie zunächst GROUP_CONCAT, um die JSON-Objekte für untergeordnete Zeilen in einem JSON-Array zu verketten. Anschließend wird die CONCAT-Funktion verwendet, um das JSON-Array in eckige Klammern zu setzen und eine gültige JSON-Zeichenfolge zu erstellen. Schließlich wandelt die CAST-Funktion die Zeichenfolge in ein JSON-Objekt um.

Fazit

Durch die Nutzung der Funktionen GROUP_CONCAT und JSON_OBJECT können wir komplexe verschachtelte JSON-Objekte aus relationalen Tabellen generieren in MySQL mit nativen JSON-Funktionen. Diese Funktion erschließt das Potenzial für eine effiziente Datenbearbeitung und einen effizienten Datenaustausch mithilfe von JSON in MySQL.

Das obige ist der detaillierte Inhalt vonWie generiert man verschachtelte JSON-Objekte aus relationalen Tabellen in MySQL mithilfe nativer JSON-Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn