Partager via


Bibliothèque partagée Azure JSON pour Java - version 1.1.0

Documentation de génération

Azure JSON fournit des primitives, des abstractions et des helpers partagés pour JSON.

Prise en main

Prérequis

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, Infinityet -Infinity.

JsonReaderne 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

JsonReaderl’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).

JsonWriterpermet d’écrire des valeurs JSON non standard couramment utilisées, telles que , , , Infinityet , à -Infinityl’aide writeNumberField de ou writeRawValue. -INFINFNaN

JsonWritern’écrit pas de valeurs null , , , ou String lorsqu’elles sont écrites en tant que champ, writeBinaryField, writeBooleanField, writeNumberFieldou writeStringField, si un champ null doit être écrit, utilisez writeNullField. NumberBooleanbyte[]

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 OutputSteamWriter.

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 JsonReaderde créer des s et JsonWriterdes 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 JsonReaders et JsonWriters. À l’heure actuelle, il n’existe qu’une seule configuration permettant de déterminer si les nombres non numériques, NaN, INFInfinity-INFet -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, JsonWriteret 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 , JsonReaderContractTestsJsonWriterContractTestset JsonProviderContractTests. Ces tests décrivent toutes les exigences contractuelles de base définies par JsonReader, JsonWriteret 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.

  1. Fork it
  2. Créer votre branche de fonctionnalité (git checkout -b my-new-feature)
  3. Valider vos modifications (git commit -am 'Add some feature')
  4. Push vers la branche (git push origin my-new-feature)
  5. Créer une demande de tirage

Impressions