Biblioteca compartida de Azure JSON para Java: versión 1.1.0
Azure JSON proporciona primitivos compartidos, abstracciones y asistentes para JSON.
Introducción
Requisitos previos
- Un kit de desarrollo de Java (JDK), versión 8 o posterior.
Inclusión del paquete
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-json</artifactId>
<version>1.1.0</version>
</dependency>
Conceptos clave
JsonSerializable
JsonSerializable
se usa para definir cómo se serializa y deserializa un objeto mediante la serialización de estilo de secuencia donde el propio objeto administra la lógica de cómo se controla. La interfaz proporciona una API basada en toJson
instancias que controla la escritura del objeto en y JsonWriter
una API estática fromJson
que las implementaciones deben proporcionar para definir cómo crear un objeto leyendo desde , JsonReader
si no se proporciona UnsupportedOperationException
una implementación.
JsonToken
JsonToken
es una enumeración básica que indica el estado actual en una secuencia JSON.
JsonReader
JsonReader
proporciona tipos primitivos básicos, primitivos y con conversión boxed, y comodidad, lectura de matrices, mapas y objetos, API para leer JSON. JsonReader
se proporciona para permitir que cualquier analizador JSON subyacente lo implemente, como Jackson o GSON, siempre y cuando la implementación supere las pruebas proporcionadas por el archivo test-jar de este paquete (JsonReaderContractTests
).
JsonReader
no avanza hacia delante en el flujo JSON hasta nextToken
que se llama a , lo que significa que JsonReader.getInt
se podría llamar indefinidamente devolviendo el mismo entero sin error hasta nextToken
que avance la secuencia JSON.
JsonReader
permite la conversión de tipos entre tipos JSON, como intentar convertir una cadena JSON en un número o viceversa, y para valores JSON no estándar usados habitualmente, como NaN
, INF
, -INF
, Infinity
y -Infinity
.
JsonReader
no toma posesión del origen de entrada JSON y, por lo tanto, no cierra ningún recurso si el JSON se proporciona mediante o InputStream
Reader
.
Límites de anidamiento
JsonReader
La API genérica readUntyped
de realiza un seguimiento de la profundidad anidada del objeto que se lee. Si el anidamiento pasa el umbral de 1000
, IllegalStateException
se produce para evitar StackOverflowError
.
JsonWriter
JsonWriter
proporciona tipos primitivos básicos, escritos primitivos y tipos primitivos con conversión boxed, así como comodidad, escritura de matrices, mapas y objetos, API para escribir JSON. JsonWriter
se proporciona para permitir que cualquier escritor JSON subyacente lo implemente, como Jackson o GSON, siempre y cuando la implementación supere las pruebas proporcionadas por el archivo test-jar del paquete (JsonWriterContractTests
).
JsonWriter
permite que los valores JSON no estándar usados normalmente, como , , , y , se escriban mediante writeNumberField
o writeRawValue
.-Infinity
Infinity
-INF
INF
NaN
JsonWriter
no escribe valores NULL , , , o String
cuando se escribe como un campo, writeBinaryField
, writeBooleanField
, writeNumberField
o writeStringField
, si un campo NULL debe escribirse, use writeNullField
. Number
Boolean
byte[]
JsonWriter
debe vaciarse periódicamente para asegurarse de que el contenido escrito en él se vacía en el tipo de contenedor subyacente, normalmente o OutputStream
Writer
. Si no se vacía, es posible que el contenido se pierda. Cerrar el JsonWriter
contenido vaciado, por lo que es recomendable usarlo JsonWriter
en un bloque try-with-resources donde JsonWriter
se cierra una vez que haya terminado de usarse.
JsonWriter
no toma posesión del origen de salida JSON y, por lo tanto, no cierra ningún recurso si el JSON se está escribiendo en o OutputSteam
Writer
.
Administración de estado JSON
Para asegurarse de que el JSON que se está escribiendo es válido, JsonWriter
mantiene el estado del JSON mediante JsonWriteContext
y en cada intento de escribirlo valida si la operación es válida. La implementación de debe asegurarse de JsonWriter
que el estado se realiza correctamente, por ejemplo, cuando no se ha escrito nada, el estado JSON debe ser ROOT
y ROOT
no permite escribir nombres de campo JSON.
JsonProvider
JsonProvider
es una interfaz del proveedor de servicios que permite JsonReader
crear s y JsonWriter
s mediante implementaciones que se encuentran en la ruta de clase. JsonProvider
también puede crear las implementaciones predeterminadas proporcionadas por este paquete si no se encuentra una implementación en la ruta de clase.
JsonOptions
JsonOptions
contiene configuraciones que deben respetar todas las implementaciones de JsonReader
s y JsonWriter
s.
En este momento, solo hay una configuración para determinar si se admiten números no numéricos, NaN
, INF
-INF
, Infinity
, y -Infinity
en la lectura y escritura de JSON con una configuración predeterminada de true
, que se permiten números no numéricos.
Proporcionar una implementación de SPI
JsonReader
y JsonWriter
son interfaces de proveedor de servicios usadas por JsonProvider
y JsonProviders
para permitir que las implementaciones se carguen desde la ruta de acceso de clase. El paquete JSON de Azure proporciona una implementación predeterminada que se usa si no se encuentra en la ruta de acceso de clase. Para proporcionar una implementación personalizada, implemente JsonReader
, JsonWriter
y JsonProvider
en su propio paquete e indique que el paquete proporciona una instancia de JsonProvider
. Para asegurarse de que las implementaciones son correctas, incluya la test
dependencia con ámbito de JSON de Azure y extienda , JsonReaderContractTests
JsonWriterContractTests
y JsonProviderContractTests
. Estas pruebas describen todos los requisitos básicos de contrato establecidos por JsonReader
, JsonWriter
y y JsonProvider
prueban algunos escenarios complejos para proporcionar validación de cualquier implementación.
Ejemplos
Consulte los ejemplos Léame para obtener ejemplos detallados sobre cómo usar JSON de Azure.
Solución de problemas
Si encuentra algún error, envíe problemas a través de problemas de GitHub o consulte StackOverflow para el SDK de Java de Azure.
Pasos siguientes
Introducción a las bibliotecas de Azure que se compilan con Azure Core.
Contribuciones
Para más información sobre cómo contribuir a este repositorio, consulte la guía de contribución.
- Bifurcarlo
- Creación de la rama de características (
git checkout -b my-new-feature
) - Confirmar los cambios (
git commit -am 'Add some feature'
) - Inserción en la rama (
git push origin my-new-feature
) - Creación de una nueva solicitud de incorporación de cambios
Azure SDK for Java