Jackson: Dividir um json e preencher conhecidos e desconhecidos propriedades

Jordi:

Eu estou codificação um serviço de Primavera-boot e eu estou usando jackson ObjectMapperA fim de lidar com os meus jsons.

Eu preciso dividir um JSON como este:

{
  "copy": {
    "mode": "mode",
    "version": "version"
  },
  "known": "string value",
  "unknown": {
   "field1": "sdf",
   "field2": "sdfdf"
  },
  "unknown2": "sdfdf"
}

Quero dizer, meu feijão é assim:

public class MyBean {

    private CopyMetadata copy;
    private String known;
    private Object others;

}

Eu gostaria de preencher os campos conhecidos MyBeanpropriedades, e mover as outras propriedades desconhecidas dentro MyBean.othersda propriedade.

Propriedades conhecidas são que são colocadas como um dentro do campo MyBean.

Alguma ideia?

Vaibhav Gupta:

Uma possível solução para este problema é usar as anotações jackson @JsonAnyGetter and @JsonAnySetter

Seu Modelo Mybean.class deve ser algo como isso e ele deve funcionar

import java.util.HashMap;
import java.util.Map;

import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;

public class MyBean {

    private CopyMetadata copy;
    private String known;
    private Map<String, Object> others = new HashMap<>();

    public CopyMetadata getCopy() {
        return copy;
    }

    public void setCopy(CopyMetadata copy) {
        this.copy = copy;
    }

    public String getKnown() {
        return known;
    }

    public void setKnown(String known) {
        this.known = known;
    }

    public Map<String, Object> getOthers() {
        return others;
    }

    public void setOthers(Map<String, Object> others) {
        this.others = others;
    }

    @JsonAnyGetter
    public Map<String, Object> getUnknownFields() {
        return others;
    }

    @JsonAnySetter
    public void setUnknownFields(String name, Object value) {
        others.put(name, value);
    }

}

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=209641&siteId=1
Recomendado
Clasificación