#java #json #jackson
Вопрос:
Если у меня есть какой-либо класс, например:
import com.fasterxml.jackson.annotation.JsonProperty;
class Person {
@JsonProperty("alternativeName")
private String name;
}
У меня есть экземпляр с name = "test"
Я хотел бы иметь в журнале:
Object Person(alternativeName=test, ... [other JsonProperty..])
Как получить этот объект с JsonProperty вместо атрибутов? Есть ли какой-нибудь способ получить его?
Комментарии:
1. Ты пробовал
new ObjectMapper().writeValueAsString(person);
?2. @HelloWorld123456789 ваш код в порядке!
Ответ №1:
То, как это отображается в вашем журнале, зависит от toString()
метода. Обычно он включает имя атрибута и не обрабатывает @JsonProperty
аннотации. У вас есть два способа сделать это:
- Измените
toString()
реализацию так, чтобы она печаталасьalternativeName
вместоname
. Недостатком этого является то, что вам нужно будет адаптировать дваString
s, если вы хотите перейтиalternativeName
на что-то другое. - Используйте
ObjectMapper
writeValueAsString()
метод в своем отчете о журнале. Это будет принято@JsonProperty
во внимание, но он будет регистрироватьсяPerson
как JSON, а не как обычный POJO (как вы показали в своем примере).
Теперь вам нужно пойти на компромисс и выбрать то, что вы считаете наилучшим подходом.