java - 仅获取 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 添加的。
解决方案
使用 lombok,这意味着您还生成了 getter。如果您只需要 id,请使用以下内容映射联系人 json:
@Data
public class Contact {
@JsonValue
private Long id;
}
这将使 json 使用 id 作为整个序列化值。对于 xml 映射,我认为你必须实现一个@XmlJavaAdapter
推荐阅读
- continuous-integration - 可以相互启动的多项目管道
- c - 我可以重用 open_memstream 中的缓冲区吗
- hyperledger-fabric - 如何在超级账本结构中为每个组织创建多个隐式数据集合?
- javafx - 如何在 javafx 中借助键盘移动对象(形状)?
- php - MSSQL 以奇怪的格式返回日期和时间列
- python - 无法创建具有属性的对象
- excel - 在excel中显示值的百分比差异
- python - python 为什么它调用 __str__ 而不是 __repr__ 以及为什么 print(obj) 不起作用并抛出异常
- sql - 无法执行查询。错误:表 xdbo.user_info'、列 'uid' 中的字符串或二进制数据将被截断
- python - 需要 Python XPath 帮助