实体类双向映射进行Json序列化时出现无限循环的解决问题

[email protected]

指定的字段不会被序列化,如下则ExamPaper的directory字段不会被序列化

@OneToMany(mappedBy = "directory",  fetch = FetchType.LAZY)
@JsonIgnoreProperties("directory")
private List<ExamPaper> examPapers;

[email protected]

被注解的字段不会被序列化

[email protected]和@JsonBackReference

序列化时,@JsonBackReference标注的属性在会被忽略。@JsonManagedReference标注的属性则会被序列化。

在序列化时,@JsonBackReference的作用相当于@JsonIgnore,此时可以没有@JsonManagedReference。

反序列化时,如果没有@JsonManagedReference,则不会自动注入@JsonBackReference标注的属性(被忽略的父或子);如果有@JsonManagedReference,则会自动注入自动注入@JsonBackReference标注的属性。

[email protected]entityInfo

被注解的实体类每次被序列化时,Jackson都会被为它生成一个标识id,若遇到id相同的对象(即同一个对象),则不会再次对其序列化,直接忽略,可以断绝循环引用

原文地址:https://www.cnblogs.com/woncode/p/8719362.html

时间: 2024-08-06 13:51:51

实体类双向映射进行Json序列化时出现无限循环的解决问题的相关文章

用Jackson进行Json序列化时的常用注解

Jackson时spring boot默认使用的json格式化的包,它的几个常用注解: @JsonIgnore 用在属性上面,在序列化和反序列化时都自动忽略掉该属性 @JsonProperty("xxx") 用在属性上面,在序列化和反序列化时都将该属性识别为xxx @JsonPropertyOrder(Value={"pname1","pname2"}) 用在实体类上面,主要是反序列时改变属性的排列顺序,pname1和pname2是实体类中的两个

通过MyEclipse生成实体类及映射文件

1.在工程上添加hibernate支持,导入相关包,修改配置文件为如下: hibernate.cfg.xml文件 <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate

java 根据实体类创建映射文件

import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.Field; import java.util.List; import java.util.Set; import com.mohe.model.entity.Teach; /** * 根据实体类生成映射文件 * * @author dxm * */ public class Obj

Mybatis配置文件和实体类的映射文件,以及dao层的书写

mybatis-config.xml,配置文件,用于连接数据库.底层使用的是oracle数据库的emp表 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd&

C#对实体进行JSON序列化时枚举的处理

实体类如下: public enum ESex { Boy, Girl } public class Person { public String Name { get; set; } public String Address { get; set; } public String Age { get; set; } public ESex Sex { get; set; } public Person() { } public Person(String name, String addre

hibernate用注解配置实体类的映射

一.注解类 1. @Table 声明了该实体bean映射指定的表(table),目录(catalog)和schema名字 2. @Id 声明了该实体bean的标识属性(对应表中的主键). 3. @Column 声明了属性到列的映射.该注解有如下的属性: name 可选,列名(默认值是属性名) unique 可选,是否在该列上设置唯一约束(默认值false) nullable 可选,是否设置该列的值可以为空(默认值false) insertable 可选,该列是否作为生成的insert语句中的一个

JAVA中 Map转换实体类对象简单实现 JSON

原文链接:https://blog.csdn.net/qq_23140197/article/details/86503875   (侵删) 开发的过程中往往依赖的表过多直接按Map来传递数值,某些场景需要把Map转换为实体类,这里贴一个最简洁的方法,依赖阿里的FastJSon. maven引入 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId>

json序列化时datetime的处理方法

.net自带的json序列化器,JavaScriptSerializer和DataContractJsonSerializer,都是序列化成微软的datetime json格式,e.g. "\/Date(1198908717056)\/" 如果你将json序列化器换成json.net,可能会碰到序列化datetime格式的问题. json.net的行为是这样的. <=4.5,也是序列化成微软的datetime json格式,e.g. "\/Date(1198908717

实体类和xml之间的序列化

/// <summary> /// Xml序列化与反序列化 /// </summary> public class XmlUtil { public static string GetRoot(string xml) { XmlDocument doc = new XmlDocument(); doc.LoadXml(xml.Replace("\r\n", "").Replace("\0", "").T