EntityFramework中Json序列化的循环引用问题解决--Newtonsoft.Json
2016-06-18 18:24
696 查看
1.在使用EF时,由于数据库主外键关联,将对象进行Json序列化时会遇到循环引用的问题
解决方案1:使用Newtonsoft.Json工具序列化,忽略循环引用
使用方式1:
使用方式2:
解决方案2:使用Newtonsoft.Json中的方法注释,在Json序列化的时候忽略关联属性
重点设置忽略方法注释:
默认序列化的时候就会过滤掉Ignore的
更多:
//EF 中由于数据库主外键关联,对象的序列化经常出现循环引用问题 //使用.Net 自带的序列化工具,序列化出现循环引用问题 List<student> list = _Context.students.ToList(); JavaScriptSerializer ser = new JavaScriptSerializer(); string str = ser.Serialize(list); Console.WriteLine(str);
解决方案1:使用Newtonsoft.Json工具序列化,忽略循环引用
使用方式1:
//使用Newtonsoft 的序列化工具,可以设置忽略循环引用 方法1 //但是还有有循环结构数据的转化,只是循环的级数固定了 List<student> list = _Context.students.Where(q => q.sno == "103").ToList(); JsonSerializerSettings settings = new JsonSerializerSettings(); settings.MissingMemberHandling = MissingMemberHandling.Ignore; //settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; string result = JsonConvert.SerializeObject(list, settings); Console.WriteLine(result);
使用方式2:
//使用Newtonsoft 的序列化工具,可以设置忽略循环引用,方法2 //但是还有有循环结构数据的转化,只是循环的级数固定了 List<student> list = _Context.students.Where(q => q.sno == "103").ToList(); JsonSerializerSettings settings = new JsonSerializerSettings(); settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; JsonSerializer ser = JsonSerializer.Create(settings); using (StringWriter sw = new StringWriter()) { ser.Serialize(sw, list); Console.WriteLine(sw.ToString()); }
解决方案2:使用Newtonsoft.Json中的方法注释,在Json序列化的时候忽略关联属性
重点设置忽略方法注释:
[JsonIgnore] public virtual ICollection<score> scores { get; set; }
默认序列化的时候就会过滤掉Ignore的
//使用Newtonsoft 的序列化工具,可以设置忽略循环引用 方法3(推荐) //本方法结合方法注释 [JsonIgnore] ,就是在Json序列化的时候,忽略[JsonIgnore]指定的属性 //这个方法相对比较常用 List<student> list = _Context.students.Where(q => q.sno == "103").ToList(); string result = JsonConvert.SerializeObject(list); Console.WriteLine(result);
//还可以显示指定忽略 List<student> list = _Context.students.Where(q => q.sno == "103").ToList(); JsonSerializerSettings settings = new JsonSerializerSettings(); settings.MissingMemberHandling = MissingMemberHandling.Ignore; string result = JsonConvert.SerializeObject(list, settings); Console.WriteLine(result);
更多:
解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json
相关文章推荐
- JavaScript 计算笛卡尔积
- C# Json序列化工具--Newtonsoft.Json简介和使用
- 小白教程 Ubuntu 14 Jstorm的搭建与配置
- rapidjson 简单封装
- 观察者模式 详解
- 5、第2篇 JSP语言基础之----JSP基本语法
- 《javascript代码规范整理》
- 【项目总结】 JS设置span的内容
- ajax解析xml数据转换为json
- 【drp 10】JSP页面中model1和model2的区别
- 【drp 10】JSP页面中model1和model2的区别
- (二)JavaScript中的面对对象
- javaScript知识点大全
- javascript 解析json数据获取到item和value
- JavaScript 严格模式 use strict
- javascript如何设置DIV背景色为随机色
- 再次被JS气炸——<script>引用的位置
- json 转换篇
- javascript 特效实现(1)——展开选项和收起效果
- JSON