Например, у меня есть класс User
, который имеет только 2 поля - name
и identification
, которые аннотируются @JsonProperty
соответственно. И я использую Jackson
для преобразования этого объекта в Map
, но результат не тот, который я ожидал. Я хочу, чтобы все ключи в карте результатов были такими, как я объявил в User
, а не в @JsonProperty
.
Пользователь класса
class User {
@JsonProperty("username")
private String name;
@JsonProperty("id")
private int identification;
//constructor, getters, setters and toString
}
Фрагмент кода
ObjectMapper mapper = new ObjectMapper();
User user = new User("Bob", 123);
System.out.println(user.toString());
Map<String, Object> result = mapper.convertValue(user, Map.class);
System.out.println(result.toString());
Вывод на консоль
Пользователь [имя = Боб, идентификация = 123]
{ username = Bob, id = 123}
Но то, что я ожидал для карты, выглядит следующим образом. Имя поля должно быть таким же, как определено в классе Пользователь , а не в значении, указанном в @JsonProperty
. Кстати, я не могу удалить @JsonProperty
, потому что они где-то используются для сериализации / десериализации.
{имя = Боб, идентификация = 123}
Любые советы и предложения будет с благодарностью. Спасибо!