Serialize The JSON Matrix en Java Obxectos – Java, JSON, Serialization, Jackson

Teño unha matriz JSON como a que se mostra a continuación, que teño que serializalo na miña clase. Estou a usar Jackson no meu proxecto.

Na matriz JSON anterior, clientValue terá outro json obxecto nel. Como podo serializar a miña matriz de JSON anterior na miña clase Java usando 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}

Non teño usado Jackson antes, entón eu non estou seguro de como podo eu Usa-lo para serializar a miña matriz JSON en obxectos Java? Estou a usar a anotación de Jackson aquí para serializar as cousas, pero non estou seguro de que será o meu seguinte paso.

respostas

1 para a resposta № 1

pode crear unha función de utilidade que resólvese a continuación. Pode querer cambiar a función de deserencialización segundo as necesidades da súa empresa. No meu caso, non quería fallar en propiedades descoñecidas = > (falil_on_unknown_properties, false)

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;}

pode chamalo usando un enfoque semellante como se mostra a continuación:

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

1 para a resposta № 2

Pode probar e @JsonAnySetter con anotacións con un obxecto de clase interior. Tamén o nome de cliente debe ter o tipo de cadea, non 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 unha resposta

O teu enderezo electrónico non se publicará Os campos obrigatorios están marcados con *