webentwicklung-frage-antwort-db.com.de

Speichern von Daten in MySQL als JSON

Ich dachte, das wäre eine n00b Sache. Und so habe ich es noch nie gemacht. Dann sah ich, dass FriendFeed dies tat und tatsächlich die DB-Skala verbesserte und die Latenz verringerte. Ich bin neugierig, ob ich das tun soll. Und wenn ja, wie geht es richtig?

Grundsätzlich ist es ein guter Ort, um zu lernen, wie Sie alles in MySQL als CouchDB-Datenbank speichern können. Wenn Sie alles als JSON speichern, scheint es einfacher und schneller zu sein (nicht zu bauen, weniger Latenz).

Ist es einfach, Dinge, die als JSON in der Datenbank gespeichert sind, zu bearbeiten, zu löschen usw.?

102
Oscar Godson

CouchDB und MySQL sind zwei sehr unterschiedliche Bestien. JSON ist die native Methode zum Speichern von Inhalten in CouchDB. In MySQL können Sie JSON-Daten am besten als Text in einem einzigen Feld speichern. Dies würde den Zweck des Speicherns in einem RDBMS völlig verfehlen und jede Datenbanktransaktion erheblich verkomplizieren.

Nicht.

Trotzdem schien FriendFeed auf MySQL ein extrem benutzerdefiniertes Schema zu verwenden. Es hängt wirklich davon ab, was genau Sie speichern möchten. Es gibt kaum eine eindeutige Antwort darauf, wie Sie ein Datenbanksystem missbrauchen, so dass es für Sie sinnvoll ist. In Anbetracht der Tatsache, dass der Artikel sehr alt ist und der Hauptgrund gegen Mongo und Couch die Unreife war, würde ich diese beiden neu bewerten, wenn MySQL es nicht für Sie schneidet. Sie sollten inzwischen sehr gewachsen sein.

55
deceze

Jeder, der etwas kommentiert, scheint aus dem falschen Blickwinkel zu kommen, es ist in Ordnung, JSON-Code über PHP in einer relationalen Datenbank zu speichern, und es ist in der Tat schneller, komplexe Daten wie diese zu laden und anzuzeigen Entwurfsüberlegungen wie Suchen, Indexieren usw.

Der beste Weg, dies zu tun, ist die Verwendung von hybriden Daten. Wenn Sie beispielsweise auf der Grundlage von datetime MySQL suchen müssen (Leistung angepasst), ist dies wesentlich schneller als PHP und für die Suche nach Entfernungen von Veranstaltungsorten, die MySQL verwenden sollte auch viel schneller sein (Hinweissuche nicht abrufbar). Daten, nach denen Sie nicht suchen müssen, können in JSON, BLOB oder einem anderen Format gespeichert werden, das Sie als wirklich notwendig erachten.

Daten, auf die Sie zugreifen müssen, werden sehr einfach als JSON gespeichert, z. B. als Basisrechnungssystem. Sie profitieren von RDBMS nicht sehr und können in JSON nur durch json_encoding ($ _ POST ['Entires']) gespeichert werden, wenn Sie über die richtige HTML-Formularstruktur verfügen. 

Ich bin froh, dass Sie mit MongoDB zufrieden sind, und ich hoffe, dass es Ihnen weiterhin gute Dienste leistet. Denken Sie jedoch nicht, dass MySQL immer aus dem Ruder läuft, da Ihre App an Komplexität gewinnt, für die Sie möglicherweise ein RDBMS benötigen einige Funktionen und Funktionen (auch wenn es nur um abgelehnte archivierte Daten oder Geschäftsberichte geht)

MySQL 5.7 unterstützt jetzt einen nativen JSON-Datentyp, der MongoDB und anderen Dokumentenspeichern mit schematischen Daten ähnelt:

JSON-Unterstützung

Ab MySQL 5.7.8 unterstützt MySQL einen nativen JSON-Typ. JSON-Werte werden nicht als Zeichenfolgen gespeichert, sondern verwenden ein internes Binärformat, das einen schnellen Lesezugriff auf Dokumentelemente ermöglicht. JSON-Dokumente, die in JSON-Spalten gespeichert sind, werden beim Einfügen oder Aktualisieren automatisch validiert, wobei ein ungültiges Dokument zu einem Fehler führt. JSON-Dokumente werden bei der Erstellung normalisiert und können mit den meisten Vergleichsoperatoren wie =, <, <=,>,> =, <>,! = Und <=> verglichen werden. Informationen zu unterstützten Operatoren sowie zu Vorrang und anderen Regeln, die MySQL beim Vergleich von JSON-Werten einhält, finden Sie unter Vergleich und Reihenfolge von JSON-Werten.

MySQL 5.7.8 führt auch eine Reihe von Funktionen für das Arbeiten mit JSON-Werten ein. Diese Funktionen umfassen die hier aufgeführten:

  1. Funktionen, die JSON-Werte erstellen: JSON_ARRAY (), JSON_MERGE () und JSON_OBJECT (). Siehe Abschnitt 12.16.2, „Funktionen, die JSON-Werte erstellen“.
  2. Funktionen, die nach JSON-Werten suchen: JSON_CONTAINS (), JSON_CONTAINS_PATH (), JSON_EXTRACT (), JSON_KEYS () und JSON_SEARCH (). Siehe Abschnitt 12.16.3, „Funktionen, die nach JSON-Werten suchen“.
  3. Funktionen, die JSON-Werte ändern: JSON_APPEND (), JSON_ARRAY_APPEND (), JSON_ARRAY_INSERT (), JSON_INSERT (), JSON_QUOTE (), JSON_REMOVE (), JSON_REPLACE (), JSON_SET () und JSON_UNQUOTE (). Siehe Abschnitt 12.16.4, „Funktionen, die JSON-Werte ändern“.
  4. Funktionen, die Informationen zu JSON-Werten bereitstellen: JSON_DEPTH (), JSON_LENGTH (), JSON_TYPE () und JSON_VALID (). Weitere Informationen hierzu finden Sie in Abschnitt 12.16.5, „Funktionen, die JSON-Wertattribute zurückgeben“.

In MySQL 5.7.9 und höher können Sie column-> path als Abkürzung für JSON_EXTRACT (column, path) verwenden. Dies funktioniert als Alias ​​für eine Spalte, wenn ein Spaltenbezeichner in einer SQL-Anweisung vorkommen kann, einschließlich der Klauseln WHERE, ORDER BY und GROUP BY. Dazu gehören SELECT-, UPDATE-, DELETE-, CREATE TABLE- und andere SQL-Anweisungen. Die linke Seite muss ein JSON-Spaltenbezeichner sein (und kein Alias). Die rechte Seite ist ein zitierter JSON-Pfadausdruck, der anhand des als Spaltenwert zurückgegebenen JSON-Dokuments ausgewertet wird.

Weitere Informationen zu -> und JSON_EXTRACT () finden Sie in Abschnitt 12.16.3, „Funktionen, die nach JSON-Werten suchen“. Informationen zur JSON-Pfadunterstützung in MySQL 5.7 finden Sie unter JSON-Werte suchen und ändern. Siehe auch Sekundärindizes und virtuell erzeugte Spalten.

Mehr Info:

https://dev.mysql.com/doc/refman/5.7/de/json.html

56
eecue

json-zeichen sind nichts besonderes, wenn es um speicher geht, zeichen wie 

{, }, [, ], ', a-z, 0-9.... sind wirklich nichts Besonderes und können als Text gespeichert werden.

das erste Problem, das Sie haben werden, ist folgendes

{ Profil-ID: 22, Benutzername: 'Robert', Kennwort: 'skhgeeht893htgn34ythg9er' }

das Speichern in einer Datenbank ist nicht so einfach zu aktualisieren, es sei denn, Sie hatten ein eigenes Verfahren und entwickelten einen Jsondecode für MySQL

UPDATE users SET JSON(user_data,'username') = 'New User';

Da Sie dies nicht tun können, müssen Sie zunächst den JSON AUSWÄHLEN. Dekodieren, ändern, aktualisieren. Theoretisch könnten Sie also mehr Zeit darauf verwenden, eine geeignete Datenbankstruktur zu erstellen.

Ich verwende json zum Speichern von Daten, aber nur Metadaten, Daten, die nicht häufig aktualisiert werden, die nicht benutzerspezifisch sind. Beispiel: Wenn ein Benutzer einen Beitrag hinzufügt, fügt er in diesem Beitrag Bilder hinzu, die die Bilder parsen und Thumbnails erstellen Verwenden Sie dann die Thumb-URLs im Json-Format.

24
RobertPitt

Um zu verdeutlichen, wie schwierig es ist, JSON-Daten mithilfe einer Abfrage zu erhalten, werde ich die Abfrage teilen, die ich gemacht habe, um damit umzugehen.

Es werden keine Arrays oder andere Objekte berücksichtigt, sondern nur grundlegende Datentypen. Sie sollten die 4 Instanzen von column in den Spaltennamen ändern, in dem der JSON gespeichert ist, und die 4 Instanzen von myfield in das JSON-Feld ändern, auf das Sie zugreifen möchten.

SELECT
    SUBSTRING(
        REPLACE(REPLACE(REPLACE(column, '{', ''), '}', ','), '"', ''),
        LOCATE(
            CONCAT('myfield', ':'),
            REPLACE(REPLACE(REPLACE(column, '{', ''), '}', ','), '"', '')
        ) + CHAR_LENGTH(CONCAT('myfield', ':')),
        LOCATE(
            ',',
            SUBSTRING(
                REPLACE(REPLACE(REPLACE(column, '{', ''), '}', ','), '"', ''),
                LOCATE(
                    CONCAT('myfield', ':'),
                    REPLACE(REPLACE(REPLACE(column, '{', ''), '}', ','), '"', '')
                ) + CHAR_LENGTH(CONCAT('myfield', ':'))
            )
        ) - 1
    )
    AS myfield
FROM mytable WHERE id = '3435'
14
Jorjon

Dies ist eine alte Frage, aber ich kann sie immer noch ganz oben in den Suchergebnissen von Google sehen. Ich denke, es wäre sinnvoll, 4 Jahre nach der Frage eine neue Antwort hinzuzufügen.

Zunächst einmal gibt es eine bessere Unterstützung für das Speichern von JSON in RDBMS. Sie können erwägen, zu PostgreSQL zu wechseln (obwohl MySQL JSON seit v5.7.7 unterstützt). PostgreSQL verwendet sehr ähnliche SQL-Befehle wie MySQL, außer, dass sie mehr Funktionen unterstützen. Eine der hinzugefügten Funktionen ist, dass sie den JSON-Datentyp bereitstellen, und Sie können nun den gespeicherten JSON abfragen. ( Einige Hinweise dazu ) Wenn Sie die Abfrage nicht direkt in Ihrem Programm erstellen, z. B. PDO in php oder eloquent in Laravel, müssen Sie lediglich PostgreSQL auf Ihrem Server installieren und ändern Datenbankverbindungseinstellungen. Sie müssen nicht einmal Ihren Code ändern.

Wie in den anderen Antworten vorgeschlagen, ist das Speichern von Daten als JSON direkt in RDBMS keine gute Idee. Es gibt jedoch einige Ausnahmen. Eine Situation, die ich mir vorstellen kann, ist ein Feld mit einer variablen Anzahl verknüpfter Einträge. 

Zum Speichern eines Tags eines Blogbeitrags benötigen Sie normalerweise eine Tabelle für den Blogbeitrag, eine Tagetabelle und eine entsprechende Tabelle. Wenn der Benutzer einen Beitrag bearbeiten möchte und Sie anzeigen müssen, welches Tag zu diesem Beitrag gehört, müssen Sie 3 Tabellen abfragen. Dies kann die Leistung stark beschädigen, wenn Ihre passende Tabelle/Tag-Tabelle lang ist. 

Durch das Speichern der Tags als JSON in der Blogpost-Tabelle ist für dieselbe Aktion nur eine einzige Tabellensuche erforderlich. Der Benutzer wird dann in der Lage sein, den Blogbeitrag schneller zu bearbeiten. Dies beeinträchtigt jedoch die Leistung, wenn Sie einen Bericht darüber erstellen möchten, welcher Beitrag mit einem Tag verknüpft ist, oder möglicherweise nach Tag suchen.

Sie können auch versuchen, die Datenbank zu deaktivieren. Durch das Duplizieren der Daten und das Speichern der Daten auf beide Arten können Sie von beiden Methoden profitieren. Sie benötigen nur etwas mehr Zeit zum Speichern Ihrer Daten und mehr Speicherplatz (was im Vergleich zu den Kosten für mehr Rechenleistung günstig ist).

9
cytsunny

Das hängt wirklich von Ihrem Anwendungsfall ab. Wenn Sie Informationen speichern, die in der Berichterstellung keinen Wert haben und nicht über JOINs mit anderen Tabellen abgefragt werden, kann es sinnvoll sein, Ihre Daten in einem einzigen Textfeld zu speichern, das als JSON codiert ist.

Dies könnte Ihr Datenmodell erheblich vereinfachen. Erwarten Sie jedoch nicht, dass Sie diese Daten mit anderen normalisierten Daten kombinieren können, wie von RobertPitt erwähnt.

9
Phil LaNasa

Ich würde sagen, es gibt nur zwei Gründe, um dies in Betracht zu ziehen:

  • leistung ist mit einem normalisierten Ansatz einfach nicht gut genug
  • sie können Ihre besonders fließenden/flexiblen/sich ändernden Daten nicht ohne weiteres modellieren

Ich habe hier ein wenig über meinen eigenen Ansatz geschrieben:

Welche Skalierbarkeitsprobleme sind bei der Verwendung eines NoSQL-Datenspeichers aufgetreten?

(siehe die oberste Antwort)

Sogar JSON war nicht sehr schnell genug, also verwendeten wir einen benutzerdefinierten Textformatierungsansatz. Arbeitete/arbeitet weiterhin gut für uns. 

Gibt es einen Grund, warum Sie so etwas wie MongoDB nicht verwenden? (könnte sein, dass MySQL "erforderlich" ist; nur neugierig)

8
Brian

Es scheint mir, dass jeder, der diese Frage beantwortet, irgendwie das eine kritische Problem vermisst, außer @deceze - das richtige Werkzeug für den Job verwenden . Sie können eine relationale Datenbank zwingen, fast jede Art von Daten zu speichern, und Sie können Mongo zwingen, relationale Daten zu verarbeiten, aber zu welchen Kosten? Am Ende führen Sie Komplexität auf allen Ebenen der Entwicklung und Wartung ein, vom Schemaentwurf bis zum Anwendungscode. Ganz zu schweigen vom Performance-Hit.

Im Jahr 2014 haben wir Zugriff auf viele Datenbankserver, die bestimmte Datentypen außergewöhnlich gut verarbeiten. 

  • Mongo (Dokumentenablage)
  • Redis (Schlüsselwertspeicher)
  • MySQL/Maria/PostgreSQL/Oracle/etc (relationale Daten)
  • CouchDB (JSON)

Ich bin mir sicher, dass ich andere vermisst habe, wie RabbirMQ und Cassandra. Mein Punkt ist, verwenden Sie das richtige Werkzeug für die Daten, die Sie speichern müssen. 

Wenn Ihre Anwendung das Speichern und Abrufen einer Vielzahl von Daten wirklich, sehr schnell (und wer nicht) erfordert, scheuen Sie sich nicht, mehrere Datenquellen für eine Anwendung zu verwenden. Die gängigsten Web-Frameworks bieten Unterstützung für mehrere Datenquellen (Rails, Django, Grails, Cake, Zend usw.). Diese Strategie beschränkt die Komplexität auf einen bestimmten Anwendungsbereich, den ORM oder die Datenquellenschnittstelle der Anwendung.

5
CheddarMonkey

Hier ist eine Funktion, die Schlüssel eines JSON-Arrays in einer Spalte speichert/aktualisiert, und eine andere Funktion, die JSON-Werte abruft. Diese Funktionen werden unter der Annahme erstellt, dass der Spaltenname für das Speichern des JSON-Arrays json ist. Es verwendetPDO.

Speicher-/Aktualisierungsfunktion

function save($uid, $key, $val){
 global $dbh; // The PDO object
 $sql = $dbh->prepare("SELECT `json` FROM users WHERE `id`=?");
 $sql->execute(array($uid));
 $data      = $sql->fetch();
 $arr       = json_decode($data['json'],true);
 $arr[$key] = $val; // Update the value
 $sql=$dbh->prepare("UPDATE `users` SET `json`=? WHERE `id`=?");
 $sql->execute(array(
   json_encode($arr), 
   $uid
 ));
}

dabei ist $ uid die ID des Benutzers, $ key - der zu aktualisierende JSON-Schlüssel, dessen Wert als $ val bezeichnet wird.

Wertfunktion erhalten

function get($uid, $key){
 global $dbh;
 $sql = $dbh->prepare("SELECT `json` FROM `users` WHERE `id`=?");
 $sql->execute(array($uid));
 $data = $sql->fetch();
 $arr  = json_decode($data['json'], true);
 return $arr[$key];
}

dabei ist $ key ein Schlüssel vonJSONarray, von dem wir den Wert benötigen.

5
Subin

Frühere Unterstützung für das Speichern von JSON in MySQL wurde der MySQL 5.7.7 JSON Labs-Version ( Linux-Binärdateien , Quelle hinzugefügt! Die Veröffentlichung scheint aus einer Reihe von JSON-bezogenen benutzerdefinierten Funktionen gewachsen zu sein, die veröffentlicht wurden im Jahr 201 .

Diese aufkommende native JSON-Unterstützung scheint sich in eine sehr positive Richtung zu entwickeln, einschließlich der JSON-Validierung bei INSERT, einem optimierten Binärspeicherformat mit einer Lookup-Tabelle in der Präambel, mit der die JSN_EXTRACT-Funktion Binär-Lookups durchführen kann, anstatt sie bei jedem Zugriff zu analysieren. Es gibt auch eine ganze Reihe neuer Funktionen zum Behandeln und Abfragen bestimmter JSON-Datentypen:

CREATE TABLE users (id INT, preferences JSON);

INSERT INTO users VALUES (1, JSN_OBJECT('showSideBar', true, 'fontSize', 12));

SELECT JSN_EXTRACT(preferences, '$.showSideBar') from users;

+--------------------------------------------------+
| id   | JSN_EXTRACT(preferences, '$.showSideBar') |
+--------------------------------------------------+
| 1    | true                                      |
+--------------------------------------------------+

IMHO, das oben Genannte ist ein großartiger Anwendungsfall für diese neue Funktionalität. Viele SQL-Datenbanken verfügen bereits über eine Benutzertabelle. Anstatt endlose Schemaänderungen vorzunehmen, um den sich ändernden Benutzereinstellungen gerecht zu werden, ist es perfekt, wenn eine einzelne JSON-Spalte nur eine einzige JOIN entfernt ist. Zumal es unwahrscheinlich ist, dass es jemals für einzelne Artikel abgefragt werden muss.

Noch in den Anfängen leistet das MySQL-Serverteam hervorragende Arbeit, um die Änderungen zu kommunizieren amamBlog .

2
Rich Pollock

JSON ist auch ein gültiger Datentyp in der PostgreSQL-Datenbank. Die MySQL-Datenbank hat JSON jedoch noch nicht offiziell unterstützt. Aber es ist Backen: http://mysqlserverteam.com/json-labs-release-native-json-data-type-and-binary-format/

Ich stimme auch zu, dass es viele gültige Fälle gibt, in denen einige Daten besser zu einer Zeichenfolge in einer Datenbank serialisiert werden. Der Hauptgrund könnte sein, wenn es nicht regelmäßig abgefragt wird und wenn sich das eigene Schema ändert - Sie möchten das Datenbankschema nicht ändern, das diesem entspricht. Der zweite Grund besteht darin, dass die serialisierte Zeichenfolge direkt von externen Quellen stammt. Möglicherweise möchten Sie sie nicht alle analysieren und die Datenbank um jeden Preis einspeisen, bis Sie sie verwenden. Ich warte also darauf, dass die neue MySQL-Version JSON unterstützt, da es dann einfacher ist, zwischen verschiedenen Datenbanken zu wechseln.

2

Ich weiß, dass dies sehr spät ist, aber ich hatte eine ähnliche Situation, in der ich einen hybriden Ansatz zur Aufrechterhaltung der RDBMS-Standards verwendete, Tabellen bis zu einem Punkt zu normalisieren und dann Daten in JSON als Textwert jenseits dieses Punkts zu speichern. So speichere ich zum Beispiel Daten in 4 Tabellen nach RDBMS-Normalisierungsregeln. In der vierten Tabelle für dynamisches Schema speichere ich jedoch Daten im JSON-Format. Jedes Mal, wenn ich Daten abrufen möchte, rufe ich die JSON-Daten ab, parse sie und zeige sie in Java an. Dies hat bisher für mich funktioniert und um sicherzustellen, dass ich die Felder, die ich in json-Daten in der Tabelle umwandle, mit Hilfe einer ETL normalisiert indizieren kann. Dadurch wird sichergestellt, dass der Benutzer während der Arbeit an der Anwendung nur eine minimale Verzögerung aufweist und die Felder für die Datenanalyse in ein für RDBMS geeignetes Format umgewandelt werden. Ich sehe diesen Ansatz gut und glaube, dass MYSQL (5.7+) auch die Analyse von JSON ermöglicht Dieser Ansatz bietet Ihnen die Vorteile von RDBMS- und NOSQL-Datenbanken.

1
prashant

Ich benutze Json, um alles für ein Projekt aufzunehmen, ich benutze tatsächlich drei Tabellen! Eine für die Daten in Json, eine für den Index aller Metadaten der Json-Struktur (jede Meta wird durch eine eindeutige ID codiert) und eine für den Sitzungsbenutzer, das ist alles .. Die Benchmark kann zu diesem Zeitpunkt noch nicht quantifiziert werden Status des Codes, aber zum Beispiel war ich Benutzeransichten (innerer Join mit Index), um eine Kategorie (oder irgendetwas, als Benutzer, ...) zu erhalten, und es war sehr langsam (sehr sehr langsame, in mysql verwendete Ansicht ist das nicht guter Weg) Das Suchmodul in dieser Struktur kann alles, was ich will, aber ich denke, mongodb wird in diesem Konzept des vollständigen Json-Datensatzes effizienter sein. Für mein Beispiel sehe ich den Benutzer dazu Schaffe Baum der Kategorie und Brotkrumen, mein Gott! so viele fragen zu tun! Apache selbst ist weg! und in der Tat, für diese kleine Website verwende ich ein PHP, das Baum und Breadcrumb generiert. Die Extraktion der Daten erfolgt durch das Suchmodul (die nur den Index verwenden). Die Datentabelle wird nur für das Update verwendet. Wenn ich möchte, kann ich alle Indizes zerstören und mit allen Daten neu generieren und die umgekehrte Arbeit ausführen, um alle Daten (json) zu zerstören und nur mit der Indextabelle neu zu generieren. Mein Projekt ist jung, läuft unter PHP und MySQL, aber irgendwann werde ich mit dem Knoten js und mongodb effizienter für dieses Projekt sein.

Verwenden Sie json, wenn Sie denken, dass Sie dies tun können, nur weil Sie es können! und vergiss es, wenn es ein Fehler war; Versuchen Sie, eine gute oder schlechte Wahl zu treffen, aber versuchen Sie es!

Niedrig

ein französischer Benutzer

1
low

Ich bin der Meinung, dass das Speichern von JSON in einer MySQL-Datenbank den Zweck der Verwendung von RDBMS, wie es beabsichtigt ist, tatsächlich in Frage stellt. Ich würde es nicht für Daten verwenden, die irgendwann manipuliert oder gemeldet würden, da dies nicht nur zu mehr Komplexität führt, sondern auch die Leistung beeinflussen kann, je nachdem, wie es verwendet wird.

Ich war jedoch neugierig, ob irgendjemand anderen einen möglichen Grund für dieses Vorgehen in Betracht zog. Ich habe überlegt, eine Ausnahme für Protokollierungszwecke zu machen. In meinem Fall möchte ich Anforderungen protokollieren, die eine variable Anzahl von Parametern und Fehlern aufweisen. In dieser Situation möchte ich Tabellen für den Anfragetyp und die Anforderungen selbst mit einer JSON-Zeichenfolge mit verschiedenen Werten verwenden, die abgerufen wurden.

In der obigen Situation werden die Anforderungen protokolliert und im JSON-String-Feld niemals manipuliert oder indiziert. Allerdings würde ich in einer komplexeren Umgebung wahrscheinlich versuchen, etwas zu verwenden, das eher für diese Art von Daten gedacht ist, und es mit diesem System zu speichern. Wie andere bereits gesagt haben, hängt es wirklich davon ab, was Sie erreichen wollen, aber die Einhaltung von Standards trägt immer zur Langlebigkeit und Zuverlässigkeit bei!

1
Mark

Sie können dieses Gist verwenden: https://Gist.github.com/AminaG/33d90cb99c26298c48f670b8ffac39c

Nachdem Sie es auf dem Server installiert haben (benötigen Sie nur das Root-Privileg, nicht das Super-Privileg), können Sie Folgendes tun:

select extract_json_value('{"a":["a","2"]}','(/a)')

Es wird zurückkehren a 2. Sie können alles in JSON zurückgeben, indem Sie dies verwenden. Der gute Teil ist, dass es MySQL 5.1,5.2,5.6 unterstützt. Und Sie müssen keine Binärdatei auf dem Server installieren.

Basierend auf altem Projekt common-schema, aber es funktioniert noch heute https://code.google.com/archive/p/common-schema/