“在哪里?”;“目标”;我的JSON序列化中的属性来自哪里?

“在哪里?”;“目标”;我的JSON序列化中的属性来自哪里?,json,jackson,mapping,spring-mongodb,Json,Jackson,Mapping,Spring Mongodb,我有一个spring引导服务,使用MongoDB作为bean的存储库。我添加了一个功能,可以下载JSON格式的bean并将其上传到另一个系统上(或者简单地进行文件备份) 我正在使用ObjectMapper和writeValueAsString方法。这一切都像预期的那样工作,只是有一些附加属性不是我的bean的一部分 使用@DBRef定义的所有属性(因此指向MongoDB中的其他bean)都有一个target属性,其中包含完全相同的序列化bean。例如:我通过GUI跟踪创建bean的用户: {

我有一个spring引导服务,使用MongoDB作为bean的存储库。我添加了一个功能,可以下载JSON格式的bean并将其上传到另一个系统上(或者简单地进行文件备份)

我正在使用
ObjectMapper
writeValueAsString
方法。这一切都像预期的那样工作,只是有一些附加属性不是我的bean的一部分

使用
@DBRef
定义的所有属性(因此指向MongoDB中的其他bean)都有一个
target
属性,其中包含完全相同的序列化bean。例如:我通过GUI跟踪创建bean的用户:

{
    createdBy: {
        id: "5bb743feacbd6505304c025e",
        username: "admin",
        target: {
            id: "5bb743feacbd6505304c025e",
            username: "admin"
        }
    }
}
这个
target
是从哪里来的?有没有办法在JSON中去掉它

目标字段是由Spring数据添加的,因为它是一个惰性字段 收集因此,它就像JPA的Hibernate中的datahandler等

选项1:要忽略它们,只需添加
@JsonIgnoreProperties(value={“target”})
在类级别

@Document(collection = "song")
@JsonIgnoreProperties(value = { "target" })
public class Song {
 ...
}
选项2:使集合不懒惰


选项3:创建您自己的DBRef序列化程序,如所述

谢谢,在我查找时没有找到其他问题和答案