Jackson - Zmodyfikuj atrybut w czasie wykonywania bez adnotacji
Powiedzmy, że mam fasolę:
public class Msg {
private int code;
private Object data;
... Getter/setters...
}
I konwertuję go na JSON lub XML z tego rodzaju kodem testowym:
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 );
}
Wyjście będzie w jakiś sposób takie:
{"code":42,"data":"Are you suggesting coconuts migrate?"}
Powiedzmy, że chcę zastąpić atrybut „data” pewną dynamiczną nazwą:
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 );
}
Jeśli zadzwonię do funkcjikonwertuj („toto”) Chciałbym mieć to wyjście:
{"code":42,"toto":"Are you suggesting coconuts migrate?"}
Jeśli zadzwonię do funkcjikonwertuj („groovy”) Chciałbym mieć to wyjście:
{"code":42,"groovy":"Are you suggesting coconuts migrate?"}
Oczywiście mogłem zrobić zastąpienie String po stworzeniu JSON, ale jeśli masz odpowiedź z programowym podejściem, wezmę to.
Dzięki