Freigegebene Azure JSON-Bibliothek für Java – Version 1.1.0
Azure JSON bietet freigegebene Grundtypen, Abstraktionen und Hilfsprogramme für JSON.
Erste Schritte
Voraussetzungen
- Java Development Kit (JDK), Version 8 oder höher.
Einschließen des Pakets
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-json</artifactId>
<version>1.1.0</version>
</dependency>
Wichtige Begriffe
JsonSerializable
JsonSerializable
wird verwendet, um zu definieren, wie ein Objekt json-serialisiert und deserialisiert wird, indem die Serialisierung im Streamstil verwendet wird, wobei das Objekt selbst die Logik für die Verarbeitung verwaltet. Die Schnittstelle stellt eine instance-basierte toJson
API bereit, die das Schreiben des Objekts in eine JsonWriter
und eine statische fromJson
API verarbeitet, die Implementierungen bereitstellen müssen, um zu definieren, wie ein Objekt erstellt wird, indem aus gelesen JsonReader
wird, wenn eine Implementierung nicht bereitgestellt UnsupportedOperationException
wird.
JsonToken
JsonToken
ist eine einfache Enumeration, die den aktuellen Zustand in einem JSON-Stream angibt.
JsonReader
JsonReader
bietet sowohl grundlegende , lesen primitive und boxed primitive Typen, als auch Komfort beim Lesen von Arrays, Zuordnungen und Objekten, APIs zum Lesen von JSON. JsonReader
wird bereitgestellt, um es jedem zugrunde liegenden JSON-Parser zu ermöglichen, ihn zu implementieren, z. B. Jackson oder GSON, solange die Implementierung die Tests besteht, die von der test-jar (JsonReaderContractTests
) dieses Pakets bereitgestellt werden.
JsonReader
wird erst im JSON-Stream vorwärts vorwärts ausgeführt, bis nextToken
aufgerufen wird, was bedeutet, dass JsonReader.getInt
dies auf unbestimmte Zeit aufgerufen werden kann, um dieselbe ganze Zahl ohne Fehler zurückzugeben, bis nextToken
der JSON-Stream vorwärts voranschreitet.
JsonReader
ermöglicht die Typkonvertierung zwischen JSON-Typen, z. B. den Versuch, eine JSON-Zeichenfolge in eine Zahl zu konvertieren oder umgekehrt, und für häufig verwendete nicht standardmäßige JSON-Werte wie NaN
, , INF
, -INF
, Infinity
und -Infinity
.
JsonReader
übernimmt nicht den Besitz der JSON-Eingabequelle und schließt daher keine Ressourcen, wenn der JSON-Code mit einem InputStream
oder Reader
bereitgestellt wird.
Schachtelungsgrenzwerte
JsonReader
Die generische readUntyped
API verfolgt, wie tief geschachtelt das zu lesende Objekt ist. Wenn die Schachtelung den Schwellenwert von 1000
überschreitet, IllegalStateException
wird ausgelöst, um zu verhindern StackOverflowError
.
JsonWriter
JsonWriter
bietet sowohl grundlegende, schreibgrund- und boxed-primitive Typen als auch Komfort beim Schreiben von Arrays, Zuordnungen und Objekten, APIs zum Schreiben von JSON. JsonWriter
wird bereitgestellt, um es jedem zugrunde liegenden JSON-Writer zu ermöglichen, ihn zu implementieren, z. B. Jackson oder GSON, solange die Implementierung die Tests besteht, die von der test-jar (JsonWriterContractTests
) des Pakets bereitgestellt werden.
JsonWriter
ermöglicht es, dass häufig verwendete nicht standardmäßige JSON-Werte wie NaN
, INF
, -INF
, Infinity
und -Infinity
mit oder writeRawValue
geschrieben writeNumberField
werden.
JsonWriter
schreibt keine NULL -byte[]
, , , Number
- oder String
-Werte, wenn als Feld, writeBinaryField
, writeBooleanField
, writeNumberField
oder writeStringField
geschrieben wird, wenn ein NULL-Feld geschrieben werden muss, verwenden writeNullField
Sie . Boolean
JsonWriter
muss in regelmäßigen Abständen geleert werden, um sicherzustellen, dass der in ihn geschriebene Inhalt in den zugrunde liegenden Containertyp geleert wird, in der Regel ein OutputStream
oder Writer
. Ein Fehler beim Leeren kann zum Verlust von Inhalten führen. Wenn Sie den Inhalt leeren JsonWriter
, empfiehlt es sich daher, in einem Try-with-Resources-Block zu verwenden JsonWriter
, in dem der JsonWriter
geschlossen wird, sobald die Verwendung abgeschlossen ist.
JsonWriter
übernimmt nicht den Besitz der JSON-Ausgabequelle und schließt daher keine Ressourcen, wenn der JSON-Code in ein OutputSteam
oder Writer
geschrieben wird.
JSON-Zustandsverwaltung
Um sicherzustellen, dass der zu schreibende JSON-Code gültig ist, behält den Zustand des JSON-Codes bei, JsonWriter
und JsonWriteContext
bei jedem Schreibversuch wird überprüft, ob der Vorgang gültig ist. Die Implementierung von JsonWriter
muss sicherstellen, dass der Zustand ordnungsgemäß nachverfolgt wird, z. B. wenn nichts geschrieben wurde, muss der JSON-Zustand sein ROOT
und ROOT
lässt das Schreiben von JSON-Feldnamen nicht zu.
JsonProvider
JsonProvider
ist eine Dienstanbieterschnittstelle, mit JsonReader
der s und JsonWriter
s mithilfe von Implementierungen im Klassenpfad erstellt werden können. JsonProvider
kann auch die Standardimplementierungen erstellen, die von diesem Paket bereitgestellt werden, wenn keine Implementierung im Klassenpfad gefunden wird.
JsonOptions
JsonOptions
enthält Konfigurationen, die von allen Implementierungen von JsonReader
s und JsonWriter
s beachtet werden müssen.
Derzeit gibt es nur eine Konfiguration zum Bestimmen, ob nicht numerische Zahlen, NaN
, INF
, -INF
, Infinity
und -Infinity
beim JSON-Lesen und -Schreiben mit der Standardeinstellung unterstützt true
werden, dass nicht numerische Zahlen zulässig sind.
Bereitstellen einer SPI-Implementierung
JsonReader
und JsonWriter
sind Dienstanbieterschnittstellen, die von JsonProvider
und JsonProviders
verwendet werden, um das Laden von Implementierungen aus dem Klassenpfad zu ermöglichen. Das Azure JSON-Paket stellt eine Standardimplementierung bereit, die verwendet wird, wenn sie im Klassenpfad nicht gefunden werden kann. Um eine benutzerdefinierte Implementierung bereitzustellen, implementieren Sie JsonReader
, JsonWriter
und JsonProvider
in Ihr eigenes Paket, und geben Sie an, dass das Paket eine instance von JsonProvider
bereitstellt. Um sicherzustellen, dass Ihre Implementierungen korrekt sind, schließen Sie die test
bereichsbezogene Abhängigkeit von Azure JSON ein, und erweitern Sie die JsonReaderContractTests
, JsonWriterContractTests
und JsonProviderContractTests
. In diesen Tests werden alle grundlegenden Vertragsanforderungen beschrieben, die von , JsonWriter
und und festgelegt sindJsonReader
, und JsonProvider
einige komplexe Szenarien testen, um eine Validierung jeder Implementierung zu ermöglichen.
Beispiele
Ausführliche Beispiele zur Verwendung von Azure JSON finden Sie in der Infodatei zu den Beispielen .
Problembehandlung
Wenn Fehler auftreten, senden Sie Probleme über GitHub Issues oder checken Sie StackOverflow für das Azure Java SDK aus.
Nächste Schritte
Erste Schritte mit Azure-Bibliotheken, die mit Azure Core erstellt werden.
Mitwirken
Ausführliche Informationen zum Mitwirken zu diesem Repository finden Sie im Leitfaden zur Mitarbeit.
- Fork
- Erstellen Ihres Featurebranch (
git checkout -b my-new-feature
) - Commit für Ihre Änderungen (
git commit -am 'Add some feature'
) - Pushen an den Branch (
git push origin my-new-feature
) - Erstellen eines neuen Pull Request
Azure SDK for Java