Jackson - Modifica um atributo em tempo de execução sem anotação
Vamos dizer que eu tenho um bean:
public class Msg {
private int code;
private Object data;
... Getter/setters...
}
E eu converto em JSON ou XML com esse tipo de código de teste:
public String convert() {
Msg msg = new Msg();
msg.setCode( 42 );
msg.setData( "Are you suggesting coconuts migrate?" );
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString( msg );
}
A saída será de alguma forma assim:
{"code":42,"data":"Are you suggesting coconuts migrate?"}
Agora, digamos que eu queira substituir o atributo 'data' por algum nome dinâmico:
public String convert(String name) {
Msg msg = new Msg();
msg.setCode( 42 );
msg.setData( "Are you suggesting coconuts migrate?" );
ObjectMapper mapper = new ObjectMapper();
// ...DO SOMETHING WITH MAPPER ...
return mapper.writeValueAsString( msg );
}
Se eu chamar a funçãoconverter ("toto") Eu gostaria de ter esta saída:
{"code":42,"toto":"Are you suggesting coconuts migrate?"}
Se eu chamar a funçãoconverter ("groovy") Eu gostaria de ter esta saída:
{"code":42,"groovy":"Are you suggesting coconuts migrate?"}
É claro que eu poderia fazer uma substituição de String após a criação do JSON, mas se você tiver uma resposta com uma abordagem programática, eu a aceitarei.
obrigado