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

questionAnswers(2)

yourAnswerToTheQuestion