栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JPA实体类转换Json时候栈溢出异常

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JPA实体类转换Json时候栈溢出异常

使用jpa查询实体,实体之间存引用关系的时候,容易发生循环引用问题。A->B B->A 导致栈溢出,这是我们需要阻断其中的关系。 举个栗子
import com.fasterxml.jackson.annotation.JsonIgnore;

public class Person{

private String name;
private String age;
//这里转换Json时不想将此字段展示。
@JsonIgnore //一刀切,转换的时候不会输出,json映射实体的时候也不会
private String addr;

//标注在get、set方法方法上和标注在成员变量上效果一样。序列化反序列化都会忽略
@JsonIgnore
private String getAddr() {
	return addr;
}

}

上面介绍的@JsonIgnore 只能用来忽略某个字段,不能细化的设置,比如说序列化的时候不处理,反序列化的时候为该字段赋值。

@JsonIgnoreProperties(ignoreUnknown = true)
这个字段标识到类上,代表如果字段属性不存在就不输出这个字段,那么我想要这个字段存在的时候也不输出,反序列化的时候还能赋值呢?

我这里时maven引入了alibaba的 fast json,使用fastjson进行序列化,和反序列化。
mavne 仓库


        
            com.alibaba
            fastjson
            1.2.73
        
public class Person{

private String name;
private String age;
//这里转换Json时不想将此字段展示。
@JsonIgnore //一刀切,转换的时候不会输出,json映射实体的时候也不会
private String addr;

//通过这个注解在对应的get方法上标注可以忽略
@JSONField(serialize = false)
private String getAddr() {
	return addr;
}
//set方法上标注serialize = true 在反序列化的时候会进行处理,不忽略
@JSONField(serialize = true)
private String setAddr() {
	return addr;
}

}

jackson我暂时没有找到可以这样用的注解,有知道的小伙伴可以评论区留言哦

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/973105.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号