Джексон - Изменить атрибут во время выполнения без аннотации
Допустим, у меня есть боб:
public class Msg {
private int code;
private Object data;
... Getter/setters...
}
И я конвертирую его в JSON или XML с помощью такого тестового кода:
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 );
}
Вывод будет как-то так:
{"code":42,"data":"Are you suggesting coconuts migrate?"}
Теперь предположим, что я хочу заменить атрибут data на какое-то динамическое имя:
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 );
}
Если я вызываю функциюконвертировать ("toto") Я хотел бы иметь такой вывод:
{"code":42,"toto":"Are you suggesting coconuts migrate?"}
Если я вызываю функциюконвертировать ("заводной") Я хотел бы иметь такой вывод:
{"code":42,"groovy":"Are you suggesting coconuts migrate?"}
Конечно, я мог бы заменить String после создания JSON, но если у вас есть ответ с программным подходом, я его приму.
Спасибо