我有一个使用MongoDB作为我的bean的存储库的spring boot服务。我添加了一个功能,可以以JSON格式下载bean并将其上传到另一个系统上(或者只是进行文件备份)。
我正在将ObjectMapper
与writeValueAsString
方法一起使用。所有这些都按预期工作,除了不属于我的bean的其他属性。
用@DBRef
定义的所有属性(因此指向MongoDB中的其他bean)都具有target
属性,其中包含完全相同的序列化bean。例如:我跟踪通过GUI创建bean的用户:
{
createdBy: {
id: "5bb743feacbd6505304c025e",
username: "admin",
target: {
id: "5bb743feacbd6505304c025e",
username: "admin"
}
}
}
此target
的来源,有没有办法在JSON中消除它?
答案 0 :(得分:2)
“目标”字段是由Spring Data添加的,因为它很懒 采集。因此就像Hibernate for JPA中的datahandler等。
选项1:要忽略它们,您只需添加
@JsonIgnoreProperties(value = { "target" })
在班级上@Document(collection = "song") @JsonIgnoreProperties(value = { "target" }) public class Song { ... }
选项2:使集合不懒惰
选项3:创建自己的DBRef序列化程序,如Spring Data Mongo + Lazy Load + REST Jackson
所述