序列化类型为XX的对象时检测到循环引用

简介: 序列化类型为XX的对象时检测到循环引用

今天遇到的一个问题,请求一段数据,返回赋值给一个对象以后序列化失败,提示“序列化类型为XX的对象时检测到循环引用”。深入进去查看Model时,发现这个要被序列化的Model里面引用了另外一个Model,另外一个Model又引用了这个Model。


我TM也是无语。事后排查是这两个表有外键关系,使用EF生成Model的时候,就会这样。


这个问题解决起来也不复杂,循环引用的Model是无法序列化的,所以我们换个实体就可以了,你可以手动赋值给自定义的新实体,也可以通过属性映射,自动映射(如AutoMapper)。


PS:外键确实可以保证数据的一致性,但是使用起来非常不便,尤其数据库迁移。数据的一致性通过代码一样可以实现,在使用数据库的时候,应当减少这些互相依赖性的东西,不然开发过程中各种掣肘,浪费时间。


当然如果你是技术大牛,你觉得无所谓就无所谓好了。每个人看法不同,这里只是吐槽。


PS:楼主邮箱 tccwpl@163.com

目录
相关文章
|
1月前
|
JSON Java API
GSON 泛型对象反序列化解决方案
GSON 泛型对象反序列化解决方案
|
1天前
|
Java
springboot解决jackson序列化Long类型精度失效问题
springboot解决jackson序列化Long类型精度失效问题
5 0
|
1月前
对象数组序列化和反序列化
对象数组序列化和反序列化
21 1
|
1月前
|
分布式计算 Java 大数据
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
63 0
|
1月前
|
存储 JSON 安全
Python中对象到文件的序列化和反序列化
【4月更文挑战第2天】在Python编程中,序列化和反序列化是处理对象与文件之间转换的重要技术。序列化是将对象状态转换为可以存储或传输的形式的过程,通常是将对象转换为字节流。反序列化则是将序列化后的形式转换回对象的过程。在Python中,我们可以使用`pickle`模块来轻松地实现对象的序列化和反序列化。
|
1月前
|
JSON Android开发 数据格式
android 使用GSON 序列化对象出现字段被优化问题解决方案
android 使用GSON 序列化对象出现字段被优化问题解决方案
|
1月前
|
缓存 NoSQL Java
Spring Data Redis对象缓存序列化问题
在使用 Redis 时,有没有遇到同我一样,对象缓存序列化问题的呢?
85 6
Spring Data Redis对象缓存序列化问题
|
1月前
|
vr&ar
MFC序列化及反序列化对象
MFC序列化及反序列化对象
24 0
|
1月前
|
存储 JSON 运维
PowerShell 对象的序列化和反序列化
PowerShell 对象的序列化和反序列化
54 0
|
1月前
|
XML 存储 JSON
C# | 使用Json序列化对象时忽略只读的属性
将对象序列化成为Json字符串是一个使用频率非常高的功能。Json格式具有很高的可读性,同时相较于XML更节省空间。 在开发过程中经常会遇到需要保存配置的场景,比如将配置信息保存在配置类型的实例中,再将这个对象序列化成为Json字符串并保存。当需要加载配置时,则是读取Json格式的字符串再将其还原成配置对象。在序列化的过程中,默认会将所有公开的属性和字段都序列化进入Json字符串中,这其中也会包含只读的属性或字段,而只读的属性和字段在反序列化的过程中其实是无意义的,也就是说这一部分存储是多余的。 本文将讲解如何在执行Json序列化时,忽略掉那些只读的属性和字段。
80 0
C# | 使用Json序列化对象时忽略只读的属性