Как распечатать объект json, если свойство json отличается от атрибута?

#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 аннотации. У вас есть два способа сделать это:

  1. Измените toString() реализацию так, чтобы она печаталась alternativeName вместо name . Недостатком этого является то, что вам нужно будет адаптировать два String s, если вы хотите перейти alternativeName на что-то другое.
  2. Используйте ObjectMapper writeValueAsString() метод в своем отчете о журнале. Это будет принято @JsonProperty во внимание, но он будет регистрироваться Person как JSON, а не как обычный POJO (как вы показали в своем примере).

Теперь вам нужно пойти на компромисс и выбрать то, что вы считаете наилучшим подходом.