首页 > 解决方案 > 仅获取 Json/xml 中的 ID 值

问题描述

我有两个 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 ?所有的 getter、constructors 和 setter 都是由 lombok 添加的。

标签: javajsonlombok

解决方案


使用 lombok,这意味着您还生成了 getter。如果您只需要 id,请使用以下内容映射联系人 json:

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

这将使 json 使用 id 作为整个序列化值。对于 xml 映射,我认为你必须实现一个@XmlJavaAdapter


推荐阅读