Serialize a Matriz JSON em Objetos Java – Java, JSON, Serialization, Jackson

Eu tenho uma matriz json como a mostrada abaixo, que eu preciso serializá-la na minha aula. Eu estou usando o jackson no meu projeto.

Na matriz json anterior, clientValue terá outro JSON objeto nele. Como posso serializar minha matrix json anterior na minha aula 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}

Eu não usei Jackson antes, então não tenho certeza de como posso Use-o para serialize minha matriz JSON em Objetos Java? Estou usando a anotação de Jackson aqui para serializar as coisas, mas não tenho certeza do que meu próximo passo será.

respostas

1 para a resposta № 1

Pode criar uma função de utilitário que é resolver abaixo. Você pode querer alterar a função de desserialização de acordo com suas necessidades de negócios. No meu caso, não queria falhar em propriedades desconhecidas = > (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 chamá-lo usando uma abordagem semelhante, conforme mostrado abaixo:

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

1 para a resposta № 2

Você pode tentar @JsonAnyGetter e @JsonAnySetter anotações com um objeto de classe interna. Também o ClientName deve ter o tipo de string, não 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;}}

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *