Possível configurar o Jackson-Json Mapper para excluir propriedades com base em qual objeto está serializando?

StackOverflow https://stackoverflow.com/questions/2507768

  •  22-09-2019
  •  | 
  •  

Pergunta

Digamos que eu tenha objetos como uma empresa com uma lista de objetos de endereço e um pedido que tenha um negócio.

É possível configurar para que, quando a ordem seja serializada, exclua a lista de endereços do objeto de negócios e, quando a empresa é serializada, inclui a lista?

Estou usando o Ajax para extrair dados para uma RIA e, ao trabalhar com o pedido, não me importo com os dados do endereço, mas ao lidar com os negócios, quero a lista.

Também estou usando o Hibernate para persistência, então isso é realmente uma eficiência e otimização de desempenho.

Foi útil?

Solução

Se eu entendo a pergunta corretamente, sim, eu acho Visualizações JSON pois Jackson permitiria isso. Você basicamente criaria duas visualizações diferentes (perfis) para o mesmo tipo e escolheria qual usar para serializar.

Outras dicas

Você poderia usar o Anotação Jsonignore para ignorar o Endereço Liste em serialização e desligar o uso de anotações no ObjectMapper's SerializationConfig ao serializar a O negócio. Obviamente, isso significa que outras anotações que você pode usar também são ignoradas. Não é perfeito, mas você pode encontrar uma solução melhor analisando isso, espero que ajude (obviamente).

ObjectMapper mapper = new ObjectMapper();
mapper.getSerializationConfig().disable(Feature.USE_ANNOTATIONS);

Sim, você pode fazer isso. Tudo o que você precisa é declarar a lista de endereço como propriedade transitória em seu objeto de negócios.

Em seguida, adicione o seguinte código ao seu JSONCONCIG:

jsonConfig.setIgnoreTransientFields(true);
@JsonIgnore 

é usado para ignorar as propriedades que você não deseja converter para o JSON.

public class UserDocument {

    private long id;

    private String documentUrl;

    @JsonIgnore
    private byte documentType;

    //traditional getters and setters
}

Saída: isso converterá as propriedades Eu iria e documenturl mas não converterá a propriedade tipo de documento.

{
  "id": 5,
  "document_url": "/0/301115124948.jpg"
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top