我正在使用Jackson将JPA模型序列化为JSON。
我有以下课程:
import com.fasterxml.jackson.annotation.*;
import javax.persistence.*;
import java.util.Set;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class)
@Entity
public class Parent {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@JsonManagedReference
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Set<Child> children;
//Getters and setters
}
和
import com.fasterxml.jackson.annotation.*;
import javax.persistence.*;
import java.util.HashSet;
import java.util.Set;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator.class)
@Entity
public class Child {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
@JsonBackReference
@ManyToOne
@JoinColumn(name = "parentId")
private Parent parent;
//Getters and setters
}
我正在使用POJO映射从模型序列化为JSON。当我序列化Parent对象时,我得到以下JSON:
{
"id": 1,
"name": "John Doe",
"children": [
{
"id": 1,
"name": "child1"
},{
"id": 2,
"name": "child2"
}
]
}
但是当我序列化一个Child时,我得到以下JSON:
{
"id": 1,
"name": "child1"
}
缺少对父级的引用。有办法解决吗?
我认为您必须在@JsonIdentityInfo和@ JsonBackReference / @ JsonManagedReference之间进行选择。
我会在您的实体上使用@JsonIdentityInfo(generator =
ObjectIdGenerators.PropertyGenerator.class,property =“ id”),删除@
JsonBackReference / @ JsonManagedReference对。
并在要排除的字段上添加@JsonIgnore。
问题内容: 我正在使用Jackson将JPA模型序列化为JSON。 我有以下课程: 和 我正在使用POJO映射从模型序列化为JSON。当我序列化Parent对象时,我得到以下JSON: 但是当我序列化一个Child时,我得到以下JSON: 缺少对父级的引用。有办法解决吗? 问题答案: 我认为您必须在@JsonIdentityInfo和@ JsonBackReference / @ JsonMana
问题内容: 我正在使用Jackson将JPA模型序列化为JSON。 我有以下课程: 和 我正在使用POJO映射从模型序列化为JSON。当我序列化Parent对象时,我得到以下JSON: 但是当我序列化一个Child时,我得到以下JSON: 缺少对父级的引用。有办法解决吗? 问题答案: 我认为您必须在@JsonIdentityInfo和@ JsonBackReference / @ JsonMana
问题内容: 我有两个实体: 我知道和。如果我要序列化的实例,那么它们很好。 但是我还需要传输的实例,并且我想填充该字段。 换一种说法: 在序列化时应该有,但是其父字段可能为空(可以通过使用json参考注释解决)。 在序列化时,它应该带有它们(但不必填充。) 有没有一种使用标准Jackson功能来解决它的方法? 即跳过已经序列化的实体的序列化,而不是标记符合或不符合序列化条件的字段。 问题答案:
我正在尝试反序列化JSON对象,例如 Java子对象引用父对象的对象,例如: 像这样反序列化时,子对象#父对象不会指向父对象。我在做在线研究时读到了两种方法,但非似乎有效。 1.向类添加构造函数arg以设置父对象 执行此操作时,我得到错误: 2.使用和注释 此操作失败: JsonBackReference的JavaDoc说它不能应用于集合,所以它显然不起作用,但我想知道为什么在线上有这么多例子将它
问题内容: 我想通过实施将其序列化为Json 该映射序列化为非标准。我想在单元测试中测试此行为。 问题答案: 你不能像这样测试。你在这里做什么 正在建立 出站 响应。在JAX-RS框架中,发出响应后,例如 它仍然需要通过序列化到JSON。 阅读有关实体提供者的更多信息 话虽如此,泽西岛有一个测试框架,我们可以用来测试我们的资源方法。您可以在Github上找到所有官方示例 一个样本(有一些改动):
问题内容: 使用Jackson XmlMapper注释,如何将XML反序列化为pojo? 我试图使用这样的东西: 当我尝试使用XmlMapper的readValue()时,出现以下错误: 问题答案: 您的课程与您的课程不符。结构比您想象的要简单。请参见以下示例: 简单用法: 上面的程序打印(适用于您): 也可以看看: jackson-dataformat-xml。 主页:Jackson XML d