Compartir a través de


Biblioteca compartida de Azure JSON para Java: versión 1.1.0

Documentación de compilación

Azure JSON proporciona primitivos compartidos, abstracciones y asistentes para JSON.

Introducción

Requisitos previos

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 , JsonReadersi 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, Infinityy -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 InputStreamReader.

Límites de anidamiento

JsonReaderLa 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).

JsonWriterpermite que los valores JSON no estándar usados normalmente, como , , , y , se escriban mediante writeNumberField o writeRawValue.-InfinityInfinity-INFINFNaN

JsonWriterno escribe valores NULL , , , o String cuando se escribe como un campo, writeBinaryField, writeBooleanField, writeNumberFieldo writeStringField, si un campo NULL debe escribirse, use writeNullField. NumberBooleanbyte[]

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

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 JsonReadercrear s y JsonWriters 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 JsonReaders y JsonWriters. 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, JsonWritery 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 , JsonReaderContractTestsJsonWriterContractTestsy JsonProviderContractTests. Estas pruebas describen todos los requisitos básicos de contrato establecidos por JsonReader, JsonWritery 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.

  1. Bifurcarlo
  2. Creación de la rama de características (git checkout -b my-new-feature)
  3. Confirmar los cambios (git commit -am 'Add some feature')
  4. Inserción en la rama (git push origin my-new-feature)
  5. Creación de una nueva solicitud de incorporación de cambios

Impresiones