Получить только значение идентификатора в JSON / XML

У меня есть два объекта jpa:

@Entity
public class Contact {

@Id
private Long id;
}

А также

@Entity
@XmlRootElement(name = "APPLICATION")
@XmlAccessorType(XmlAccessType.FIELD)
public class Application {

@Id
@JsonProperty("APPLICATION_ID")
@XmlElement(name = "APPLICATION_ID")
private Long id;

@ManyToOne
@JoinColumn(name = "contact_id", nullable = false)
@JsonProperty("CONTACT_ID")
@XmlElement(name = "CONTACT_ID")
private Contact contact;

Так что в моем контроллере я получаю JSON или XML приложения, как это:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<APPLICATION>
<APPLICATION_ID>6</APPLICATION_ID>
<CONTACT_ID>
    <id>1</id>
</CONTACT_ID>
</APPLICATION>

но мне нужно

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<APPLICATION>
<APPLICATION_ID>6</APPLICATION_ID>
<CONTACT_ID>1</CONTACT_ID>
</APPLICATION>

Или в JSON у меня есть:

{
"APPLICATION_ID": 6,
"CONTACT_ID": {
    "id": 1
}

но нужно:

{
"APPLICATION_ID": 6,
"CONTACT_ID": 1,
}

Как я могу получить только applicationID? Все геттеры, конструкторы и сеттеры добавлены lombok.

1 ответ

Использование lombok означает, что у вас также есть сгенерированные геттеры Используйте следующую команду для сопоставления контакта json, если вам нужен только идентификатор:

@Data public class Contact { @JsonValue private Long id; }

Это заставит json использовать id в качестве всего сериализованного значения. Для отображения XML, я думаю, что вы должны реализовать @XmlJavaAdapter

Другие вопросы по тегам