我的 JSON 序列化中的 "target" 属性来自哪里?
Where do the "target" properties in my JSON serialization come from?
我有一个 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 中摆脱它?
来自
The Target field is added by Spring Data because it is a lazy
collection. So it is like datahandler etc. in Hibernate for JPA.
Option1: To ignore them you just have to add
@JsonIgnoreProperties(value = { "target" })
on class level
@Document(collection = "song")
@JsonIgnoreProperties(value = { "target" })
public class Song {
...
}
Option2: Make the Collection not lazy
选项 3:创建您自己的 DBRef 序列化程序,如 Spring Data Mongo + Lazy Load + REST Jackson
所述
我有一个 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 中摆脱它?
来自
The Target field is added by Spring Data because it is a lazy collection. So it is like datahandler etc. in Hibernate for JPA.
Option1: To ignore them you just have to add
@JsonIgnoreProperties(value = { "target" })
on class level@Document(collection = "song") @JsonIgnoreProperties(value = { "target" }) public class Song { ... }
Option2: Make the Collection not lazy
选项 3:创建您自己的 DBRef 序列化程序,如 Spring Data Mongo + Lazy Load + REST Jackson
所述