JSON-Dokumentdarstellung
JSON-Dokumente bestehen aus Feldern, bei denen es sich um Name/Wert-Paar-Objekte handelt. Die Felder können in beliebiger Reihenfolge und in Arrays verschachtelt oder angeordnet sein. Db2® kann mit JSON-Dokumenten im ursprünglichen JSON-Format oder im binärcodierten Format namens BSON (Binary JSON) arbeiten.
Weitere Informationen zu JSON-Dokumenten finden Sie unter JSON-Dokumente.
JSON-Daten müssen in Unicode bereitgestellt werden und die Codierung UTF-8 verwenden. Daten im BSON-Format müssen intern das Little Endian-Format verwenden.
Zu Ihrer Bequemlichkeit stehen Ihnen die SYSIBM.JSON_TO_BSON Konvertierungsfunktionen SYSIBM.BSON_TO_JSON und zur Verfügung. Sie können diese Funktionen ausführen, um eine Datei nach Bedarf von einem Format in ein anderes zu konvertieren.
Wenn JSON-Daten für Db2 als Eingabe für eine JSON-SQL-Funktion dargestellt werden, werden diese Daten zuerst interpretiert und in einem geeigneten Datentyp Db2 auf der Basis der normalen Db2 -Datentyperwartungen gespeichert. Anschließend wird der Wert in das Format konvertiert, das für den entsprechenden ursprünglichen JSON-Datentyp auf der Basis des Db2 -Quellendatentyps erforderlich ist. Dieser JSON-Datenwert wird dann von der JSON SQL-Funktion verarbeitet.
- Numerische Werte, boolesche Werte und Nullwerte sind nicht betroffen.
- Zeichenfolgewerte werden in Anführungszeichen eingeschlossen und alle Sonderzeichen in der Zeichenfolge werden mit Escapezeichen versehen.
- Datums-, Zeit-und Zeitmarkenwerte werden in Anführungszeichen eingeschlossen.
- Binärwerte werden als UTF-8 -Daten interpretiert.
Die Angabe der Klausel FORMAT JSON gibt an, dass die Daten bereits im JSON-Format vorliegen und nicht durch Db2 in einen gültigen JSON-Wert geändert werden müssen. Diese Klausel legt nur fest, welches Format von Db2verarbeitet wird oder nicht. Die Klausel erkennt keine ungültige JSON.
Die folgende Tabelle enthält einige Beispiele dafür, wie Werte aus ihrer Db2 -Datentypdarstellung zur äquivalenten JSON-Datendarstellung verarbeitet werden. Unter diesen Beispielen erfolgt die Verarbeitung mit und ohne Angabe der optionalen Klausel FORMAT JSON.
| DB2-Datentyp | Db2 -Wert | JSON-Darstellung (Klausel FORMAT JSON nicht angegeben) | JSON-Darstellung (FORMAT JSON angegeben) | Beschreibung der Eingabe |
|---|---|---|---|---|
| Zeichenfolge | {"Name":123} | "{\"Name\":123}" | {"Name":123} | Gültiges JSON-Objekt, das in der Zeichenfolge enthalten ist. |
| Zeichenfolge | {"Name";123} | "{\"Name\";123}" | {"Name";123} | FORMAT JSON für ungültiges JSON-Objekt |
| Zeichenfolge | ["Name", "Adresse"] | "[\" Name \", \" Adresse \"]" | ["Name", "Adresse"] | Gültiges JSON-Array, das in der Zeichenfolge enthalten ist. |
| Zeichenfolge | ["Name": "Adresse"] | "[\" Name \": \" Adresse \"]" | ["Name": "Adresse"] | JSON in ungültigem JSON-Array formatieren |
Daten im BSON-Format werden nicht konvertiert und direkt zur Verarbeitung als BSON an die JSON-SQL-Funktion übergeben.
Daten, die für eine JSON-SQL-Funktion unter Verwendung eines binären Db2 -Datentyps dargestellt werden, werden im BSON-Format angenommen, es sei denn, die optionale Klausel FORMAT JSON wird angegeben.
| DB2-Datentyp | Format angenommen |
|---|---|
| BLOB | BSON |
| CHARACTER | JSON |
| CLOB | JSON |
| VARBINARY | BSON |
| VARCHAR | JSON |
Doppelte Schlüssel
Ähnlich wie JSON selbst erzwingt Db2 keine Eindeutigkeit für Schlüsselnamen in JSON-Dokumenten. Da die Eindeutigkeit nicht erzwungen wird, ist es möglich, dass derselbe Schlüsselname einmal oder mehrmals in demselben JSON-Dokument und sogar in demselben JSON-Objekt vorhanden ist. Schlüssel mit demselben Namen in demselben JSON-Objekt werden als doppelte Schlüssel betrachtet. Wenn doppelte Schlüssel in einem JSON-Objekt vorhanden sind, gibt die Db2 -Verarbeitung nur den ersten gefundenen Schlüssel zurück. Der erste Schlüssel kann das erste Vorkommen dieses Schlüssels im Dokument sein.
Der Schlüssel "a" tritt beispielsweise mehrmals in diesem JSON-Dokument auf (das so formatiert ist, dass das Beispiel deutlicher wird):
{"a":{"b":10,
"c":11},
"a":{"d":70,
"e":71}}
In diesem Fall wird der Schlüssel "a" als doppelter Schlüsselname betrachtet, da er zweimal in demselben JSON-Objekt vorkommt. Nur ein Schlüssel mit dem Namen „a“ wird von Db2 diesem JSON-Objekt zurückgegeben.
{"a":{"b":10,
"c": 11},
"b":{"a":70,
"b": 71}}In diesem Beispiel wird der Schlüssel "a" nicht als doppelter Schlüsselname betrachtet und beide Werte von "a" werden von Db2 zurückgegeben, wenn das entsprechende JSON-Objekt abgefragt wird. Während der Schlüsselname "b" im Beispiel mehrfach vorkommt, erscheint er auch nur einmal in jedem eindeutigen JSON-Objekt. Daher wird keines der Vorkommen als Duplikatschlüssel betrachtet.
BSON-Format
Db2 unterstützt Daten, die im BSON-Format als Eingabe für die JSON-SQL-Funktionen dargestellt werden. Die BSON-Daten können vom Kunden bereitgestellt oder mit der kostenlosen [ SYSIBM.JSON_TO_BSON ] Konvertierungsfunktion erstellt werden.
Alle Standardgrenzwerte und Einschränkungen für BSON-Datentypen gelten für Werte, die als Eingabe für die JSON-SQL-Funktionen bereitgestellt werden. Beispiel: Die maximale Anzahl langer Zeichen, die vom BSON-Format unterstützt wird, beträgt 9.223.372.036.854.775.807 (264 -1).
- BSON binär
- BSON-Objekt-ID
- Regulärer BSON-Ausdruck
- BSON DB-Zeiger
- BSON JavaScript -Code
- BSON JavaScript -Code mit Bereich
- BSON-Symbol
- BSON-Zeitmarke
- Mindestschlüssel für BSON
- BSON max. Schlüssel