¿Existe una forma incorporada de deserializar Map en Jackson?
La API está devolviendo una matriz de entradas de mapas como esta:
[
{"key": "Key1", "value": "Value1"},
{"key": "Key2", "value": "Value2"},
{"key": "Key3", "value": "Value3"},
...
]
Y me gustaría deserializarlo directamente en un Map<string, string="">
, de manera que se convierta en:
Map<string, string=""> {Key1->Value1, Key2->Value2, Key3->Value3}
La solución obvia es deserializar como List<apimapentry>
, ¿pero tal vez hay una forma más sencilla de hacerlo?
Lo que estoy haciendo ahora:
@JsonProperty
public void setMyTargetMap(List<apimapentrywrapper> wrappers) {
this.myTargetMap = wrappers.stream().collect(Collectors.toMap(ApiMapEntryWrapper::getKey, ApiMapEntryWrapper::getValue));
}
class ApiMapEntryWrapper {
private String key;
private String value;
}
Mientras que lo que estaría buscando sería algo como (haciendo referencia al ejemplo de JSON) sin necesidad de ApiMapEntryWrapper
:
java
</string,></string,></string,>
@JsonMap(keyName="key", valueName="value")
private Map<string, strin=""> myTargetMap;
davy.ai
Como experto en IT especializado en Java, Spring y Jackson, sugiero la siguiente solución para deserializar directamente la respuesta de la API en
Map<string,string>
sin la necesidad deApiMapEntryWrapper
:Con este código, puede utilizar Jackson para deserializar el JSON y luego llamar al método
toMap()
para obtener unMap<string,string>
:El método
toMap()
utiliza flujos de Java 8 para convertir la lista de objetosApiMapEntry
en unMap<string,string>
. Este enfoque evita la necesidad de una clase intermediaApiMapEntryWrapper
y proporciona una solución concisa y legible.</string,string></string,></string,string></string,></string,string>