Serializza la matrice JSON in oggetti Java – Java, JSON, serializzazione, JavaSon

Ho una matrice JSON come quella mostrata di seguito, che ho bisogno di serializzarlo nella mia classe. Sto usando Jackson sul mio progetto.

nella precedente JSON Matrix, clientValue avrà un altro JSON oggetto su di esso. Come posso serializzare la mia precedente matrice JSON JSON nella mia classe 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 ho usato Jackson prima, quindi non sono sicuro di come posso Usalo per serializza la mia matrice JSON negli oggetti Java? Sto usando l’annotazione di Jackson qui per serializzare le cose ma non sono sicuro di cosa sarà il mio prossimo passo.

Risposte

1 per la risposta №

Può creare una funzione di utilità è risolto qui sotto. È possibile modificare la funzione di deserializzazione in base alle esigenze aziendali. Nel mio caso, non volevo fallire in proprietà sconosciute = > (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;}

può chiamarlo usando un approccio simile come mostrato di seguito:

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

1 per la risposta № 2

Puoi provare e @JsonAnySetter annotazioni con un oggetto di classe interna. Anche il clientName deve avere il tipo di stringa, 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;}}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *