Json.NET如何避免循环引用】的更多相关文章

Json.NET在将对象序列化为Json字符串的时候,如果对象有循环引用的属性或字段,那么会导致Json.NET抛出循环引用异常. 有两种方法可以解决这个问题: 1.在对象循环引用的属性上打上[JsonIgnore]标签,例如: public class UserProfile { public string UserCode { get; set; } public string UserName { get; set; } public string MailAddress { get; s…
http://james.newtonking.com/json/help/index.html using Newtonsoft.Json;using System;using System.Collections.Generic;using System.Linq;using System.Web; namespace AccpStudentMIS{    //此类目的是防治序列化Json字符串时的循环引用问题    //此类为Object类的扩展方法,需要引用Newtonsoft.Json…
0.问题描述 EF生成的model带有导航属性,则json序列化会报循环引用错误,尝试如下 protected void Application_Start() { GlobalConfiguration.Configure(WebApiConfig.Register); ////config.Formatters.JsonFormatter.MediaTypeMappings.Add(new System.Net.Http.Formatting.QueryStringMapping("data…
1.在使用EF时,由于数据库主外键关联,将对象进行Json序列化时会遇到循环引用的问题 //EF 中由于数据库主外键关联,对象的序列化经常出现循环引用问题 //使用.Net 自带的序列化工具,序列化出现循环引用问题 List<student> list = _Context.students.ToList(); JavaScriptSerializer ser = new JavaScriptSerializer(); string str = ser.Serialize(list); Con…
WebApiConfig.cs中加入 如下代码即可解决无限循环问题 var json = config.Formatters.JsonFormatter; // 解决json序列化时的循环引用问题 json.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; // 干掉XML序列化器 config.Formatters.Remove(config.Formatters.X…
原因: entity实体中存在@OneToMany,@ManyToOne注解,在转化json是产生了循环引用 报的错误 解决方法: springmvc @ResponseBody 默认的json转化用的是 org.codehaus.jackson 这里两个实体类: 假如A对B 是一对多双向关联 死循环原因: JSON无法对A的属性List<B>进去JSON转换 在A实体类上加注释@JsonIgnoreProperties(value={"引用List<B>的变量名&quo…
本文主要从 JS 中为什么会出现循环引用,垃圾回收策略中引用计数为什么有很大的问题,以及循环引用时的对象在使用 JSON.stringify 时为什么会报错,怎样解决这个问题简单谈谈自己的一些理解. 1. 什么是循环引用 当对象 1 中的某个属性指向对象 2,对象 2 中的某个属性指向对象 1 就会出现循环引用,(当然不止这一种情况,不过原理是一样的)下面通过代码和内存示意图来说明一下. function circularReference() { let obj1 = { }; let obj…
在做MVC项目时,难免会遇到Json序列化循环引用的问题,大致错误如下 错误1:序列化类型为“...”的对象时检测到循环引用. 错误2:Self referencing loop detected for property '...' with type '...'. Path '[0].x[0]'. 以上错误是因为数据库表关系引起的,比如一对一或多对多,如图: EF里面是这样的,如图: 解决方法: 步骤1: -引用JSON.NET 步骤2: -引用Newtonsoft.Json 步骤3: -J…
接着来说这个JSON循环引用的问题: 关于JSON格式的转化,其实关键就是这几个依赖: <!-- json --> <!-- 1号 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.1</version> </depe…
循环引用:实体A与实体B有关系,A中有B作为字段,B中有A作为一个字段.查询A对象后,将A对象转化为JSON格式数据时,会因为序列化过程中导致A中有B字段,B字段中又有A,这样就引起了循环引用的问题!! 即如下的解释: 如果A对象持有B的引用,B对象持有A的引用,这样就形成了循环引用,如果直接使用json-lib转换,会报错: net.sf.json.JSONException: There is a cycle in the hierarchy! 错误由来: maven搭建的项目 使用spri…
对于两张表A.B多对多的关系中,A的导航属性中有B,B的导航属性中有A,这样Json.net对A或者B对象序列化时会形成死循环 所以对于导航属性要加标签 首先在A.B实体类工程(Model)中引用Json.ne 然后对导航属性加不序列化标签([JsonIgnore]) //------------------------------------------------------------------------------ // <auto-generated> // 此代码是根据模板生成…
Atitit.json xml 序列化循环引用解决方案json 1. 循环引用1 2. 序列化循环引用解决方法1 2.1. 自定义序列化器1 2.2. 排除策略1 2.3. 设置序列化层次,一般3级别为好..(推荐)1 2.4. Ref方法1 3. fastJson内置有合理的循环引用检测2 1. 循环引用 将Bean转化为json string时,一个非常的典型的问题就出现了,就是对象间的嵌套循环引用,如果没有合理的json生成策略,那将是一个无底洞的死循环,直到堆栈溢出.(循环引用的数据不能…
1..Net开源Json序列化工具Newtonsoft.Json中提供了解决序列化的循环引用问题: 方式1:指定Json序列化配置为 ReferenceLoopHandling.Ignore 方式2:指定 JsonIgnore忽略 引用对象 实例1,解决MVC的Json序列化引用方法: step1:在项目上添加引用 Newtonsoft.Json程序包,命令:Insert-Package Newtonsoft.Json step2:在项目中添加一个类,继承JsonResult,代码如下: ///…
以前都是到处看博客,今天小菜也做点贡献,希望能帮到大家. 废话不多说,直接进入正题. 用过.net MVC的同学应该都被json序列化报循环引用错误这个问题骚扰过.网上有一些解决办法,但是都治标不治本.如在引发异常的属性上加上[ScriptIgnore]或者[JsonIgnore],又或者用db.Configuration.ProxyCreationEnabled = false;这些解决办法都存在问题且需要多处修改并且测试.本小菜之前一直被其骚扰,就在前两天我决定一定要找到比较优的解决办法,g…
自关联对象在实际开发中用的还是比较多,例如常见的树形菜单.本文是自己实际的一个小测试,可以解决循环引用对象的json序列化问题,文笔不好请多见谅,如有错误请指出,希望有更好的解决方案,一起进步. 构造一个自关联实体 构造序列化数据 无任何处理序列化输出 可以看下面的表格数据是嵌套的 无任何处理直接序列化 解决 重写JsonResult, ReferenceLoopHandling.Ignore忽略其循环引用 调用  最终调用结果…
通常,我们会用JSON.stringify把Javascript对象序列化成JSON格式,这在大多数情况下是够用的.但是,当你要转换的对象里存在循环引用时,问题就来了. js对象循环引用导致内存泄漏 var obj = {a:1,b:3} obj.c = obj 这种方式就是循环引用 如果对象中有循环引用,用JSON.stringify()就出问题了 解决办法 参考原文地址: http://blog.ideasriver.com/using-json-stringify-handle-circu…
正文之前先说两句,距离上篇博客已将近两个月,这方面的学习和探索并没有停止,而是前进道路上遇上了各种各样的问题,需要不断的整理.反思和优化,这段时间的成果,将在最近陆续整理发出来. 个人感觉国内心态太浮躁了,很少有能深入研究下去并将自己经验分享的人,可能很忙,也可能嫌麻烦.特别是面向新技术,尤其是在学习资料有限的情况下,愿意花费时间摸索和分享的人实在太少太少,遇到问题,搜索结果一抓一大把,但是往往都是转载,连最起码的自己验证都没有,结果就是以讹传讹,不仅对解决问题无用,反而容易产生误导.最近这段时…
MVC4 EF中将数据表外键引用的是自身,转换成Json时,总是提示错误:“序列化类型为....的对象时检测到循环引用.”: 解决办法: 把要序列化的对象转为匿名对象去掉导航属性,如下 :本来是var item=db.newsColumns.Find(id),但提示循环引用,所以改写成下面形式var item=db.newsColumns.Select(x=>new {x.id,x.name,x.parentId}).Where(x=>x.id==id). [HttpGet] public J…
在MVC中返回JSON时出错,序列化类型为“System.Data.Entity.DynamicProxies.Photos....这个会的对象时检测到循环引用. public ActionResult GetSdirsbyFdirid(int id) { // db.Configuration.LazyLoadingEnabled = false; db.Configuration.ProxyCreationEnabled = false; List<Seconddirectory> lis…
先看一个T4模板生成的model实体类 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:卷猫 链接:http://anneke.cn/ArticleInfo/Detial/15 来源:Anneke.cn //------------------------------------------------------------------------------ // <auto-generated> // 此代码已从模板生成. // // 手动更改此文件可能导致…
Object.stringify 循环引用 bug & TypeError: Converting circular structure to JSON var obj = { a: "foo", }; // undefined obj; //{a: "foo"} obj.b = obj; // {a: "foo", b: {-}} JSON.stringify(obj); /* VM205:1 Uncaught TypeError: C…
以下是错误信息: Caused by: java.lang.IllegalStateException: circular reference error  Offending field: methodAccessor Offending object: preserveType: false, type: interface sun.reflect.MethodAccessor, obj: sun.reflect.DelegatingMethodAccessorImpl@5886f7bf  …
spring jpa 实体互相引用返回restful数据循环引用报错的问题 Java实体里两个对象有关联关系,互相引用,比如,在一对多的关联关系里 Problem对象,引用了标签列表ProblemLabel ProblemLabel对象,引用了所属Problem 这样构成了互相引用,导致递归循环内存溢出异常: org.springframework.http.converter.HttpMessageNotWritableException: Could not write content: I…
FastJson提供了SerializerFeature.DisableCircularReferenceDetect这个序列化选项,用来关闭引用检测.关闭引用检测后,重复引用对象时就不会被$ref代替,但是在循环引用时也会导致StackOverflowError异常. JSON.toJSONString(object, SerializerFeature.DisableCircularReferenceDetect);  …
在用Ef的时候,也许经常会遇到循环引用的错误. 下面提供解决办法.(不是Json.Net,如果是Json.Net可以给导航属性通过增加特性标签来解决该问题) ef大多数问题,可以通过ToList()来解决.当这个问题解决不来的时候,你可以选择下面这种方法. IQueryable<TopicInfo> topicInfos = _topicInfoService.GetPagedEntitesQueryable(pageSize, pageIndex, wherelambda, t =>…
说是解决,其实不是很完美的解决的,写出来只是想记录一下这个问题或者看一下有没有哪位仁兄会的,能否知道一二. 下面说说出现问题: 问题是这样的,当我查询一个一对多的实体的时候,工具直接就爆了,差不多我就猜到是哪里死循环了,最后等了好久,查看原因,果然是堆溢出,再然后是jsckson的错误.那么必然是序列化的问题了. 这是jackson的错误: at java.security.AccessController.doPrivileged(Native Method) at java.net.URLC…
0.开发环境 SSH,EasyUI,MySQL 1.需求要求: (1)首先获取所有的贷款订单数据,即List <LoanOrder>. (2)然后从单个贷款订单实体LoanOrder去访问贷款人实体Loaner的信息. 2.实体之间的关系描述 (1)LoanOrder实体与Loaner实体是双向的多对一和一对多关系. (2)LoanOrder是“多方”,其中的关系属性为“private Loaner loaner”. (3)Loaner是“一方”,其中的关系属性为“Set<LoanOrd…
以前一直没搞懂为什么C#在做对象序列化时(Json序列化,XML序列化等)有时候会出现循环引用的问题,下面写了个例子,类People有一个属性引用了类Child,而类Child也有一个属性引用了类People,并且两个属性的get访问器中都会new一个彼此类型的对象,这样在访问People类的Child属性的时候就会new一个Child对象,在访问Child类的People属性的时候又会new一个People对象.所以C#序列化方法在序列化People类的Child属性时又会去序列化Child属…
Fastjson full support databind, it's simple to use. Encode import com.alibaba.fastjson.JSON; Group group = new Group(); group.setId(0L); group.setName("admin"); User guestUser = new User(); guestUser.setId(2L); guestUser.setName("guest"…
在使用ajax调用web services时,正好返回的类型为datatable,想用通过json方式直接解析,但调用后,得到如下错误: 序列化类型为“System.Reflection.Module”的对象时检测到循环引用 经过查找博客,通过如下两步可以解决该问题: (1)引入Microsoft.Web.Preview.dll库 下载地址:http://download.csdn.net/detail/zlq861016/7235615 (2)在web.config中加入如下内容,位置为与sy…