Я использую Джексона, чтобы преобразовать мой объект в 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
и id
появляться , как value
в формате JSON.
Кто-нибудь знает, как это сделать или это возможно?
Ответы:
Вы пытались использовать @JsonProperty?
источник
@JsonProperty(value="label")
и это не работало, я попробовал, как вы предложили, и это работает! спасибо человек это действительно поможет упростить код сейчас.Имейте в виду, что есть
org.codehaus.jackson.annotate.JsonProperty
в Jackson 1.x иcom.fasterxml.jackson.annotation.JsonProperty
в Jackson 2.x. Проверьте, какой ObjectMapper вы используете (из какой версии), и убедитесь, что вы используете правильную аннотацию.источник
org.json4s.jackson
пространство имен. :) и, возможно, другая реализацияjackson
YMMV.Есть еще один вариант переименовать поле:
Джексон Миксинс .
Полезно, если вы имеете дело со сторонними классами, которые вы не можете аннотировать , или просто не хотите загрязнять класс специальными аннотациями Джексона.
Документация Джексона для Mixins устарела, поэтому этот пример может дать больше ясности. По сути: вы создаете класс mixin, который выполняет сериализацию так, как вы хотите. Затем зарегистрируйте его в ObjectMapper:
источник
Джексон
Если вы используете Джексона, вы можете использовать
@JsonProperty
аннотацию для настройки имени данного свойства JSON.Таким образом, вам просто нужно аннотировать поля сущностей с помощью
@JsonProperty
аннотации и предоставить собственное имя свойства JSON, например:JavaEE или JakartaEE JSON-B
JSON-B является стандартным связующим слоем для преобразования объектов Java в JSON и из него. Если вы используете JSON-B, вы можете переопределить имя свойства JSON с помощью
@JsonbProperty
аннотации:источник