使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题

先看一个T4模板生成的model实体类

 1 著作权归作者所有。
 2 商业转载请联系作者获得授权,非商业转载请注明出处。
 3 作者:卷猫
 4 链接:http://anneke.cn/ArticleInfo/Detial/15
 5 来源:Anneke.cn
 6
 7 //------------------------------------------------------------------------------
 8 // <auto-generated>
 9 //     此代码已从模板生成。
10 //
11 //     手动更改此文件可能导致应用程序出现意外的行为。
12 //     如果重新生成代码,将覆盖对此文件的手动更改。
13 // </auto-generated>
14 //------------------------------------------------------------------------------
15  
16 namespace MyBlog.Model
17 {
18     using Newtonsoft.Json;
19     using System;
20     using System.Collections.Generic;
21
22     public partial class ArticleType
23     {
24         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
25         public ArticleType()
26         {
27             this.ArticleInfo = new HashSet<ArticleInfo>();
28         }
29
30         public int Id { get; set; }
31         public string Title { get; set; }
32         public int ParentId { get; set; }
33
34         [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
35         [JsonIgnore]
36         public virtual ICollection<ArticleInfo> ArticleInfo { get; set; }
37     }
38 }

这是一个文章分类实体,与文章实体,是一对多的关系(一个分类下可以有很多篇文章,而一个文章只有一个分类)

这里有一个导航属性,我们控制器里将该对象序列化成json字符串的时候,会引起循环引用的问题。

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:卷猫
链接:http://anneke.cn/ArticleInfo/Detial/15
来源:Anneke.cn

public virtual ICollection<ArticleInfo> ArticleInfo { get; set; }

解决方法:我们使用Json.NET - Newtonsoft来进行序列化 首先为该导航属性加一个特性,该特性表示序列化的时候会忽略这个导航属性

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:卷猫
链接:http://anneke.cn/ArticleInfo/Detial/15
来源:Anneke.cn

[JsonIgnore]
public virtual ICollection<ArticleInfo> ArticleInfo { get; set; }

然后就可以进行序列化操作了

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:卷猫
链接:http://anneke.cn/ArticleInfo/Detial/15
来源:Anneke.cn

string json=JsonConvert.SerializeObject(articleType);
时间: 2024-10-11 00:09:09

使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题的相关文章

C#将对象序列化成JSON字符串

public string GetJsonString() { List<Product> products = new List<Product>(){ new Product(){Name="苹果",Price=5.5}, new Product(){Name="橘子",Price=2.5}, new Product(){Name="干柿子",Price=16.00} }; ProductList productlis

HTTP 请求,POST方式,把一个对象序列化成JSON样式作为参数访问服务器

public static string Login(Login login){HttpWebRequest request;WebResponse response;string remoteAddress = ConfigurationManager.AppSettings["remoteAddress"];string LoginServiceName = ConfigurationManager.AppSettings["LoginServiceName"]

jackson2.8.4java对象序列化成json字符串格式化时间

public class User {private int id; private Date birthday; private double money; private String name; public User() { } public User(int id, String name, Date birthday) { super(); this.id = id; this.name = name; this.birthday = birthday; } public User(

.Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程

JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询.目前已被微软集成于webapi框架之中,因此,熟练掌握JSON.NET相当重要,这篇文章是零度参考官网整理的示例,通过这些示例,可以全面了解JSON.NET提供的功能. Newtonsoft.Json的地址: 官网:http://json.codeplex.com/ 源码地址:https://gi

iOS网络: 把Array和Dictionaries序列化成JSON对象

你想把 Array 和 dictionary 序列化成 JSON 对象.以方便在网络中传输或者保存到磁盘中. 方案: 使用 NSJSONSerialization 这个类的 dataWithJSONObject:options:error:方法来实现. 讨论: NSJSONSerialization 这个类的 dataWithJSONObject:options:error:方法可以对数组和字典进行序列化,这些数组和字典包含的值为:NSString.NSNumber.NSArray.NSDict

NET Framework 3 5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 原贴地址:http://bbs.zkinfo.com/thread-80510-1-1.html 最近要用到jQuery调用JSON,但遇到几个问题,正面将记录下遇到的问题及解决方法. 在将Object序列化成JSON时普遍是使用以下几种方式: 1. 第三方组件Newtonsoft.Json.dll来序列化. 2. 直接用Strin

Ajax_基础知识_使用Jackson第三方工具包轻松转化成JSON字符串

1.主题 Ajax_使用Jackson 2.学习视频和资料 视频    http://pan.baidu.com/s/1c0euj40 课件    http://pan.baidu.com/s/1eQEhSNC jar包    jackson-annotations-2.2.1.jar jackson-core-2.2.1.jar jackson-core-asl-1.8.8.jar jackson-databind-2.2.1.jar jackson-mapper-asl-1.8.8.jar

解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json

1..Net开源Json序列化工具Newtonsoft.Json中提供了解决序列化的循环引用问题: 方式1:指定Json序列化配置为 ReferenceLoopHandling.Ignore 方式2:指定 JsonIgnore忽略 引用对象 实例1,解决MVC的Json序列化引用方法: step1:在项目上添加引用 Newtonsoft.Json程序包,命令:Insert-Package Newtonsoft.Json step2:在项目中添加一个类,继承JsonResult,代码如下: ///

JavaScriptSerializer序列化成Json时DateTime类型数据的处理

JavaScriptSerializer在序列化时会将DateTime的数据序列化成类似\/Date(626543800000)\/这样的值,找了很多方法都不如意,最后在一个博客找到了完美的解决方法,地址:http://blog.calyptus.eu/seb/2011/12/custom-datetime-json-serialization/,通过自定义类型转换器的方式转换成想要的格式,转换器代码如下: + ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1