Подтвердить что ты не робот

Измените имя поля в JSON, используя Jackson

Я использую jackson для преобразования моего объекта в json. Объект имеет 2 поля:

@Entity
public class City {
   @id
   Long id;
   String name;
   public String getName() { return name; }
   public void setName(String name){ this.name = name; }
   public Long getId() { return id; }
   public void setName(Long id){ this.id = id; }
}

Поскольку я хочу использовать это с функцией автообновления jQuery, я хочу, чтобы "id" отображался как "значение" в json, а "name" - как "label". Документация Jackson на это не ясна, и я пробовал каждую аннотацию, которая даже отдаленно кажется, что она делает то, что мне нужно, но я не могу получить name для отображения в качестве label и id для отображения как value в json.

Кто-нибудь знает, как это сделать или если это возможно?

4b9b3361

Ответ 1

Вы пытались использовать @JsonProperty?

@Entity
public class City {
   @id
   Long id;
   String name;

   @JsonProperty("label")
   public String getName() { return name; }

   public void setName(String name){ this.name = name; }

   @JsonProperty("value")
   public Long getId() { return id; }

   public void setName(Long id){ this.id = id; }
}

Ответ 2

Помните, что в Jackson 1.x и com.fasterxml.jackson.annotation.JsonProperty в Jackson 2.x есть org.codehaus.jackson.annotate.JsonProperty. Проверьте, какой ObjectMapper вы используете (из какой версии), и убедитесь, что используете правильную аннотацию.

Ответ 3

Есть еще одна опция для переименования поля:

Jackson MixIns.

Полезно, если вы имеете дело со сторонними классами, которые вы не можете комментировать, или просто не хотите загрязнять класс специальными аннотациями Джексона.