example deserialize annotation java json jackson deserialization

deserialize - objectmapper java



Jackson-Deserializar la cadena JSON-TypeReference vs TypeFactory.constructCollectionType (1)

Después de construir JavaType , ambos llaman la misma funcionalidad de deserialización, por lo que la única diferencia es la forma en que se maneja el tipo genérico.

La segunda es completamente estática, por lo que el tipo debe ser conocido en el tipo de compilación y no puede variar. Así que es similar al uso de la clase básica literal.

El primero es dinámico, por lo que se puede usar para construir cosas que varían con respecto a su parametrización.

Personalmente prefiero la primera alternativa para todos los casos (evita la creación de una clase interna anónima más), pero la segunda puede ser más legible.

Para deserializar la cadena JSON a una lista de clases, las diferentes formas se enumeran en la pregunta StackOverflow

Tipo 1 ( docs link ):

List<SomeClass> someClassList = mapper.readValue(jsonString, typeFactory.constructCollectionType(List.class, SomeClass.class));

Tipo 2 ( docs link ):

List<SomeClass> list = mapper.readValue(jsonString, new TypeReference<List<SomeClass>>() { });

Aunque los dos tipos anteriores cumplen su función, ¿cuál es la diferencia entre estas implementaciones?