在使用FastJson开发遇到的的坑
1.list中放入同一个对象,会出现内存地址引用{"$ref":"#[0]"},后台可以识别,但是前台不会识别
@Test
public void testList(){ User user = new User();
user.setUserName("cgx");
user.setPassword("123456"); User user1 = new User();
user1.setUserName("zbz");
user1.setPassword("123456"); ArrayList list = new ArrayList();
list.add(user);
list.add(user1);
list.add(user); String jsonString = JSON.toJSONString(list,SerializerFeature.DisableCircularReferenceDetect);//关闭循环引用
System.out.println(jsonString);
}
JSON.toJSONString(list,true),会格式化json,方便查看
2.对象相互包含
@Test
public void testList1(){ User user = new User();
user.setUserName("cgx");
user.setPassword("123456"); HashSet<Role> roles = new HashSet<Role>();
HashSet<User> users = new HashSet<User>();
users.add(user); Role role = new Role();
role.setName("测试角色");
role.setUsers(users);
roles.add(role); user.setRoles(roles); //两种办法防止循环引用
//1.在bean的属性上直接@JSONField(serialize=false)去掉不需要转换的属性 //2. // 遇到sid和sname属性正常进行转换json
SimplePropertyPreFilter filter = new SimplePropertyPreFilter("password","roles","name"); String jsonString = JSON.toJSONString(user,filter,SerializerFeature.DisableCircularReferenceDetect);
System.out.println(jsonString);
}
在实体类中使用@JSONField(serialize=false),是不是此字段就不返回了,放弃转换该字段
filter进行过滤,想要现实的字段,进行转换的字段,写在过滤中,其他不进行转换
三、案例
Page<Inventory> page = inventoryService.getInventoryList(pageNum, size, sortName, sortType, productId, dueDate, creator,
status);
String jsonString = JSON.toJSONString(page,SerializerFeature.DisableCircularReferenceDetect);//关闭集合循环引用 return JSON.parseObject(jsonString);
1.page为jpa分页返回的page,其中有list,如果直接返回,就会出现内存地址引用{"$ref":"#[0]"},前台不会识别,所以使用SerializerFeature.DisableCircularReferenceDetect来关闭循环引用;
2.Inventory库存对象中:
@OneToOne(mappedBy = "inventory", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private GcOrder gcConsume;
GcOrder自营消费关联类:
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "InventoryId")
private Inventory inventory;
库存与订单消费一对一双向关联,会出现栈溢出java.lang.StackOverflowError报错,究其原因是----自关联进入了死循环,解决办法是在Inventory对象的gcConsume属性上使用@JSONField(serialize = false),使其不进行序列化。
/**
* 自营消费记录-关联
*/
@JSONField(serialize = false)
@OneToOne(mappedBy = "inventory", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private GcOrder gcConsume;
在使用FastJson开发遇到的的坑的更多相关文章
- Android开发需要注意的坑
Android开发需要注意的坑一览对于一些Android开发过程中坑爹.细小,但又重要的错误的总结Android开发在路上:少去踩坑,多走捷径其他参考: google官方版本发布图 umeng ...
- 总结微信小程序开发中遇到的坑
总结微信小程序开发中遇到的坑,一些坑你得一个一个的跳啊,/(ㄒoㄒ)/~~ 1,页面跳转和参数传递实例 首先说一下我遇到的需求有一个我的消息页面,里面的数据都是后端返回的,返回的数据大致如下,有一个是 ...
- celery开发中踩的坑
celery开发中踩的坑 celery连接redis 当使用redis做broker,redis连接需要密码时: BROKER_URL='redis://:xxxxx@127.0.0.1:6379/0 ...
- Android—基于微信开放平台v3SDK,开发微信支付填坑。
接触微信支付之前听说过这是一个坑,,,心里已经有了准备...我以为我没准跳坑出不来了,没有想到我填上了,调用成功之后我感觉公司所有的同事都是漂亮的,隔着北京的大雾霾我仿佛看见了太阳~~~好了,装逼结束 ...
- H5拍照应用开发经历的那些坑儿
一.项目简介 1.1.项目背景:这是一个在移动终端创新应用的项目,用户在浏览器端(微信/手Q)即可完成与金秀贤的合影,希望通过这样一种趣味体验,引发用户的分享与转发的热潮. 1.2.系统要求:ios6 ...
- 微信小程序开发技巧及填坑记录
以下是自己在开发过程中遇到的坑和小技巧,记录以下: 1.出现了 page[pages/XXX/XXX] not found.May be caused by :1. Forgot to add pag ...
- Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?
0.写在前面 本文涉及到屏幕密度的讨论,这里先要搞清楚 DisplayMetrics 的两个变量,摘录官方文档的解释: density:The logical density of the displ ...
- 记录hyperic-hq搭建开发环境遇到的坑
这个星期接到一个新的任务:解决HQ(一个用JAVA开发的开源的运维监控平台)现在遇到的snmp升级到3.0后bug.公司用的HQ是4.6版本.于是,我把项目从gitlab上clone下来后,就开始了我 ...
- Android SDK 开发——发布使用踩坑之路
前言 在 Android 开发过程中,有些功能是通用的,或者是多个业务方都需要使用的. 为了统一功能逻辑及避免重复开发,因此将该功能开发成一个 SDK 是相当有必要的. 背景 刚好最近自己遇到了类似需 ...
随机推荐
- 滴滴打车CTO张博:生死战役,技术和时间赛跑
三款产品背后的架构变迁 滴滴打车成立初衷是为了解决司机与乘客之间的信息不对称的问题,通过移动互联网和智能手机来打破信息的壁垒.从打车到专车再到顺风车,滴滴打车三款产品的背后是架构的挑战和系统的变迁. ...
- MySQL 性能比较测试:MySQL 5.6 GA -vs- MySQL 5.5
时间:2013年11月07日 ⁄ 分类: 数据库技术文档 ⁄ 我要吐槽发评论 MySQL 5.6 GA 发布了,毫无疑问,这是 MySQL 最棒的一个版本. 如果你还不清楚 MySQL 5.6 版 ...
- 解题:CEOI 2017 Mousetrap
题外话: 这是制杖yd的交流题目 题面 首先把捕鼠夹所在的点提出来当根,然后这变成了一棵有根树,我们先来看耗子移动的影响 可以发现耗子往下走就回不来了,而且最后还会被困在一个叶子上,那么这个时候我们把 ...
- vmware中centos7设置静态IP
1.vmware—>Edit—>Virtual Network Editor,选中vmnet8-Nat设置,查看网关IP 2.在centos中设置: vi /etc/sysconfig/n ...
- (转)编码规范系列(一):Eclipse Code Templates设置
背景:长久以来,对java编程中的注释不甚理解.再次学习<疯狂JAVA讲义>基础,深深的感到自己基本功的不牢固.所以要做到事无巨细,好好修炼. 认识注释 常识 注释的作用: 回顾原有的代码 ...
- shell实例浅谈之一产生随机数七种方法
一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数).伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产 ...
- shell比较浮点数和整数
今天有一个朋友忽然问我在shell中,如何比较浮点数和整数,倒是把我问的一愣,在工作中确实没有遇到这个场景.我们也知道,在shell中数字的计算通常都会转换成整数,比如说1.1和1会被认为是一样的.这 ...
- Shell记录-Shell脚本基础(四)
while循环,使您能够重复执行一组命令,直到某些条件发生.它通常用于当你需要反复操纵的变量值. 语法 while command do Statement(s) to be executed if ...
- CentOS安装Confluence Wiki步骤
参考:http://supernetwork.blog.51cto.com/2304163/1187066 参考:http://yjiang.tk/?p=1085 需要的文件 CentOS-6.5 ...
- bzoj千题计划149:bzoj2527: [Poi2011]Meteors
http://www.lydsy.com/JudgeOnline/problem.php?id=2527 整体二分 区间加,单点查,树状数组维护差分序列 注意 累积可能会爆long long,所以一满 ...