You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用@Embeddable注解时如何输出无嵌套的扁平化JSON结构

结论

仅通过@Embedded和@Embeddable注解无法实现你需要的JSON扁平化输出效果。
这两个注解是JPA规范下的ORM映射注解,仅作用于Java对象与数据库表的字段映射逻辑,和接口返回的JSON序列化规则完全无关。JSON序列化的结构是由你使用的序列化框架(如Jackson、Gson)控制的。

推荐解决方案

如果你的项目用SpringBoot默认的Jackson作为序列化框架,只需要在Organization类的address字段上追加一个@JsonUnwrapped注解即可:

// Organization.java
@Embedded
@JsonUnwrapped
private Address address;

加了该注解后,序列化时会自动把Address类中的所有字段直接提升到Organization的同级结构,不会生成嵌套的address/addressDetails节点,完全符合你期望的输出效果。

如果有字段名冲突的风险,还可以给扁平化的字段统一加前缀:

// 序列化后Address的字段会变成 addr_address、addr_city、addr_state...
@JsonUnwrapped(prefix = "addr_")
private Address address;

其他可选方案

如果你不想依赖Jackson的注解,也可以单独定义接口返回的DTO类,把Address类的字段直接声明在DTO中,查询到Organization实体后手动做属性拷贝即可,这种方式可以完全控制返回字段的结构,也符合分层架构的规范。

内容的提问来源于stack exchange,提问作者Ethan Miller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:48:03