serialitzar la matriu json en objectes java – java, json, serialització, jackson

Tinc una matriu JSON com la que es mostra a continuació, la qual necessito per serializarla a la meva classe. Estic usant Jackson en el meu projecte.

A la matriu JSON anterior, clientValue tindrà un altre objecte JSON en ell . Com puc serialitzar el meu matriu JSON anterior a la meva classe java usant Jackson?

public class DataRequest {@JsonProperty("clientId")private String clientId;@JsonProperty("clientName")private int clientName;@JsonProperty("clientKey")private String clientKey;@JsonProperty("clientValue")private Map<String, Object> clientValue;//getters and setters}

No he fet servir Jackson abans, així que no estic seguro¿Cómo puc usar-lo per serialitzar la meva matriu JSON en objectes Java? Estic usant l’anotació de Jackson aquí per serialitzar coses però no estic segur de quin serà el meu proper pas.

Respostes

1 per a la resposta № 1

Podeu crear una funció d’utilitat que es mostra a continuació. És possible que vulgueu canviar la funció de deserialització segons les seves necessitats comercials. En el meu cas, no vaig voler fallar en propietats desconegudes = > (FAIL_ON_UNKNOWN_PROPERTIES, fals)

static <T> T mapJson(String body,com.fasterxml.jackson.core.type.TypeReference<T> reference) {T model = null;if(body == null) {return model;}com.fasterxml.jackson.databind.ObjectMapper mapper =new com.fasterxml.jackson.databind.ObjectMapper();mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);try {model = mapper.readValue(body, reference);} catch (IOException e) {//TODO: log error and handle accordingly}return model;}

Podeu anomenar utilitzant un enfocament similar com es mostra a continuació:

mapJson(clientValueJsonString,new com.fasterxml.jackson.core.type.TypeReference<List<DataRequest>>(){});

1 per a la resposta № 2

Pots provar @JsonAnyGetter i @JsonAnySetter anotacions amb un objecte de classe interior. També clientname ha de tenir el tipus String, no int.

public class DataRequest {private String clientId;private String clientName;private String clientKey;private ClientValue clientValue;//getters and setters}public class ClientValue {private Map<String, String> properties;@JsonAnySetterpublic void add(String key, String value) {properties.put(key, value);}@JsonAnyGetterpublic Map<String,String> getProperties() {return properties;}}

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *