我想使用 flexjson 将类 Foo (可以持久化)序列化为 JSON(如果您知道其他一些支持所需功能的库,请说出来)。我想包括对类 Bar 和 FooBar 的依赖引用,但我只需要表示主键 (@Id) 的字段。我知道这可以为每个持久类手动完成,但我确信有更好的方法。
这是我的班级表示的一个例子:
@Entity
public class Foo {
@Id @GeneratedValue(...)
private Long id;
private String someField;
@ManyToOne
private Bar bar;
@OneToMany
private Collection<FooBar> fooBars
}
@Entity
public class Bar {
@Id @GeneratedValue(...)
private long id;
private String irrelevantField
@OneToMany
private Collection<Foo> foos;
}
@Entity
public class FooBar {
@Id @GeneratedValue(...)
private Long id;
private String irrelevantField
}
这是我在序列化类 Foo 时要查找的输出:
{
"id":1,
"someField":"someValue",
"bar":1, // or "bar":{"id":1}
"fooBars":[1,2,3,4,5] // or "fooBars":[{"id":1}, {"id":2}, ...]
}
并且在序列化类 Bar 时:
{
"id":1,
"irrelevantField":"someValue",
"foos":[1,2,3,4,5] // or "foos":[{"id":1}, {"id":2}, {"id":3}, ...]
}
我找到了一个临时解决方案,但我仍在寻找“正确/更好”的解决方案
new JSONSerializer().include("bar.id", "fooBars.id").exclude("bar.*", "fooBars.*").serialize((Foo)this).toString();