4 java json jackson spring-mongodb
当从Java序列化为JSON时,target
当使用@DBRef
具有延迟加载和Jackson的多态类型处理的Spring Data MongoDB 注释时,Jackson 为引用的实体生成额外的属性.为什么会发生这种情况,是否可以省略额外的target
财产?
代码示例
@Document(collection = "cdBox")
public class CDBox {
@Id
public String id;
@DBRef(lazy = true)
public List<Product> products;
}
@Document(collection = "album")
public class Album extends Product {
@DBRef(lazy = true)
public List<Song> songs;
}
@Document(collection = "single")
public class Single extends Product {
@DBRef(lazy = true)
public List<Song> songs;
}
@Document(collection = "song")
public class Song {
@Id
public String id;
public String title;
}
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME,
property = "productType",
include = JsonTypeInfo.As.EXTERNAL_PROPERTY)
@JsonSubTypes(value = {
@JsonSubTypes.Type(value = Single.class),
@JsonSubTypes.Type(value = Album.class)
})
public abstract class Product {
@Id
public String id;
}
Run Code Online (Sandbox Code Playgroud)
生成的JSON
{
"id": "someId1",
"products": [
{
"id": "someId2",
"songs": [
{
"id": "someId3",
"title": "Some title",
"target": {
"id": "someId3",
"title": "Some title"
}
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
小智 8
目标字段由Spring Data添加,因为它是一个惰性集合.所以它就像Hibernate for JPA中的datahandler等.
选项1:要忽略它们,您只需在类级别添加@JsonIgnoreProperties(value = {"target"})
@Document(collection = "song")
@JsonIgnoreProperties(value = { "target" })
public class Song {
...
}
Run Code Online (Sandbox Code Playgroud)
选项2:使集合不懒惰
归档时间: |
|
查看次数: |
663 次 |
最近记录: |