Bibliothèque partagée Azure JSON pour Java - version 1.1.0
Azure JSON fournit des primitives, des abstractions et des helpers partagés pour JSON.
Prise en main
Prérequis
- Un Kit de développement Java (JDK), version 8 ou ultérieure.
Inclure le package
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-json</artifactId>
<version>1.1.0</version>
</dependency>
Concepts clés
JsonSerializable
JsonSerializable
est utilisé pour définir la façon dont un objet est sérialisé et désérialisé au format JSON à l’aide d’une sérialisation de type flux, où l’objet lui-même gère la logique de sa gestion. L’interface fournit une API basée sur toJson
instance qui gère l’écriture de l’objet dans une JsonWriter
et une API statique fromJson
que les implémentations doivent fournir pour définir comment créer un objet en lisant à partir d’un JsonReader
, si une implémentation n’est pas fournie UnsupportedOperationException
sera levée.
JsonToken
JsonToken
est une énumération de base qui indique l’état actuel dans un flux JSON.
JsonReader
JsonReader
fournit à la fois des types primitifs de base, la lecture des types primitifs et boxés, et la commodité, la lecture de tableaux, de cartes et d’objets, les API pour la lecture JSON. JsonReader
est fourni pour permettre à n’importe quel analyseur JSON sous-jacent de l’implémenter, tel que Jackson ou GSON, tant que l’implémentation réussit les tests fournis par le test-jar de ce package (JsonReaderContractTests
).
JsonReader
ne progresse pas dans le flux JSON tant nextToken
que n’est pas appelé, ce qui peut être appelé indéfiniment en retournant le même entier sans erreur jusqu’à ce que JsonReader.getInt
le flux JSON progresse vers l’avant nextToken
.
JsonReader
permet la conversion de type entre les types JSON, comme la tentative de conversion d’une chaîne JSON en nombre ou vice versa, et pour les valeurs JSON non standard couramment utilisées, telles que NaN
, INF
, -INF
, Infinity
et -Infinity
.
JsonReader
ne prend pas en charge la source d’entrée JSON et ne ferme donc pas les ressources si le JSON est fourni à l’aide d’un InputStream
ou .Reader
Limites d’imbrication
JsonReader
l’API générique readUntyped
suit la profondeur d’imbrication de l’objet en cours de lecture. Si l’imbrication dépasse le seuil de 1000
, IllegalStateException
est levée pour empêcher StackOverflowError
.
JsonWriter
JsonWriter
fournit à la fois de base, l’écriture de primitives et de types primitifs boxés, et la commodité, l’écriture de tableaux, de cartes et d’objets, d’API pour l’écriture DE JSON. JsonWriter
est fourni pour permettre à n’importe quel enregistreur JSON sous-jacent de l’implémenter, tel que Jackson ou GSON, tant que l’implémentation réussit les tests fournis par le fichier test-jar du package (JsonWriterContractTests
).
JsonWriter
permet d’écrire des valeurs JSON non standard couramment utilisées, telles que , , , Infinity
et , à -Infinity
l’aide writeNumberField
de ou writeRawValue
. -INF
INF
NaN
JsonWriter
n’écrit pas de valeurs null , , , ou String
lorsqu’elles sont écrites en tant que champ, writeBinaryField
, writeBooleanField
, writeNumberField
ou writeStringField
, si un champ null doit être écrit, utilisez writeNullField
. Number
Boolean
byte[]
JsonWriter
doit être vidé régulièrement pour s’assurer que le contenu écrit dans celui-ci est vidé dans le type de conteneur sous-jacent, généralement un OutputStream
ou Writer
. Le fait de ne pas vider peut entraîner la perte de contenu. La fermeture du JsonWriter
contenu vide, il est donc recommandé d’utiliser JsonWriter
dans un bloc d’essai avec les ressources où est JsonWriter
fermé une fois son utilisation terminée.
JsonWriter
ne prend pas en charge la source de sortie JSON et ne ferme donc pas les ressources si le JSON est en cours d’écriture dans ou OutputSteam
Writer
.
Gestion de l’état JSON
Pour vous assurer que le JSON en cours d’écriture est valide, JsonWriter
conserve l’état du JSON à l’aide JsonWriteContext
de et à chaque tentative d’écriture vérifie si l’opération est valide. L’implémentation de doit garantir le suivi correct de JsonWriter
l’état, par exemple lorsque rien n’a été écrit, l’état JSON doit être ROOT
et ROOT
ne permet pas l’écriture de noms de champs JSON.
JsonProvider
JsonProvider
est une interface de fournisseur de services qui permet JsonReader
de créer des s et JsonWriter
des s à l’aide d’implémentations trouvées sur le classpath. JsonProvider
peut également créer les implémentations par défaut fournies par ce package si une implémentation est introuvable sur le classpath.
JsonOptions
JsonOptions
contient des configurations qui doivent être respectées par toutes les implémentations de JsonReader
s et JsonWriter
s.
À l’heure actuelle, il n’existe qu’une seule configuration permettant de déterminer si les nombres non numériques, NaN
, INF
Infinity
-INF
et -Infinity
sont pris en charge dans la lecture et l’écriture JSON avec le paramètre par défaut , que les nombres non numériques sont autorisés.true
Fourniture d’une implémentation SPI
JsonReader
et JsonWriter
sont des interfaces de fournisseur de services utilisées par JsonProvider
et JsonProviders
pour permettre le chargement des implémentations à partir du chemin de classe. Le package Azure JSON fournit une implémentation par défaut qui est utilisée si une implémentation est introuvable sur le chemin d’accès de la classe. Pour fournir une implémentation personnalisée, implémentez JsonReader
, JsonWriter
et JsonProvider
dans votre propre package et indiquez que le package fournit une instance de JsonProvider
. Pour vous assurer que vos implémentations sont correctes, incluez la test
dépendance étendue d’Azure JSON et étendez , JsonReaderContractTests
JsonWriterContractTests
et JsonProviderContractTests
. Ces tests décrivent toutes les exigences contractuelles de base définies par JsonReader
, JsonWriter
et et JsonProvider
testent quelques scénarios complexes pour fournir la validation de toute implémentation.
Exemples
Consultez les exemples README pour obtenir des exemples détaillés sur l’utilisation d’Azure JSON.
Dépannage
Si vous rencontrez des bogues, veuillez déposer des problèmes via GitHub Issues ou vérifier StackOverflow pour le Kit de développement logiciel (SDK) Java Azure.
Étapes suivantes
Prise en main des bibliothèques Azure créées à l’aide d’Azure Core.
Contribution
Pour plus d’informations sur la contribution à ce dépôt, consultez le guide de contribution.
- Fork it
- Créer votre branche de fonctionnalité (
git checkout -b my-new-feature
) - Valider vos modifications (
git commit -am 'Add some feature'
) - Push vers la branche (
git push origin my-new-feature
) - Créer une demande de tirage
Azure SDK for Java