`

C#中JSON序列化和反序列化

    博客分类:
  • C#
阅读更多

在做项目中使用EF时,发现DataContractJsonSerializer对EF中的实体,无论是接口or实现类进行序列化时,都会报:

{"The type 'XXXXXXXXXX' cannot be serialized to JSON because its IsReference setting is 'True'. The JSON format does not support references because there is no standardized format for representing references. To enable serialization, disable the IsReference setting on the type or an appropriate parent class of the type."}

网上看了一下解决方案:http://www.cnblogs.com/zhaojin/archive/2011/02/12/1952804.html 上说了一下,所以对

DataContractJsonSerializer和JavaScriptSerializer 都简单写一个(代码最直接,上代码)

一、DataContractJsonSerializer

引用System.Runtime.Serialization.dll

/// <summary>
        /// 序列化对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string Serializer<T>(this T t)
        {
            string serialization = string.Empty;
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));

            using (var memoryStream = new MemoryStream())
            {
                serializer.WriteObject(memoryStream, t);

                serialization = Encoding.UTF8.GetString(memoryStream.ToArray());
            }

            return serialization;
        }

        /// <summary>
        /// 反序列化json到对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="json"></param>
        /// <returns></returns>
        public static T Deserializer<T>(this string json) where T : class
        {
            if (!string.IsNullOrEmpty(json))
            {
                T obj = null;
                DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));

                using (var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
                {
                    obj = serializer.ReadObject(memoryStream) as T;
                }

                return obj;
            }
            return null;
        }

 

二、JavaScriptSerializer

引用System.Web.Extensions.dll

 

   /// <summary>
        /// 解决EF实体的序列化问题
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string ScriptSerialize<T>(this T t)
        {

            JavaScriptSerializer js = new JavaScriptSerializer();

            return js.Serialize(t);

        }



        public static T ScriptDeserialize<T>(this string strJson)
        {

            JavaScriptSerializer js = new JavaScriptSerializer();

            return js.Deserialize<T>(strJson);

        }

 

 

分享到:
评论

相关推荐

    一个c#的json序列化和反序列化类

    一个c#的json序列化和反序列化类,调用很简单

    C#-JSON序列化和反序列化辅助类

    C#-JSON序列化和反序列化辅助类

    C# 后台序列化Json序列、反序列化Json序列(三种方法)

    在.NET开发中,C#语言提供了多种方式来处理JSON序列化和反序列化,这对于数据交换和存储至关重要。本文将详细介绍C#中处理JSON的三种主要方法:使用Json.NET库(Newtonsoft.Json)、使用.NET Framework自带的System....

    C#之JSON序列化和反序列化

    总之,C#中的JSON序列化和反序列化是开发过程中不可或缺的一部分,它使得数据交换变得简单且高效。无论是使用内置的System.Text.Json还是第三方的Json.NET,都能帮助开发者轻松地在对象和JSON字符串之间转换,从而更...

    C#或.net json序列化反序列化,适用于与第三方系统做接口用

    C#或.net json序列化反序列化,适用于与第三方系统做接口用,实体自动转json字符串,json自动转视图

    c# 使用Json.NET实现json序列化.docx

    C#中JSON序列化和反序列化是.NET开发者在处理数据交换时常见的任务,特别是在Web服务、API接口或者数据存储中。Json.NET是一个广泛使用的第三方库,由James Newton-King开发,它提供了高效的JSON操作,并且在.NET...

    c#json序列化与反序列化.doc

    本文将详细介绍 C# 中的 JSON 序列化和反序列化,包括使用 Newtonsoft.Json 库来实现 JSON 序列化和反序列化。 一、JSON 序列化 JSON 序列化是指将 .NET 对象转换为 JSON 字符串的过程。在 C# 中,我们可以使用 ...

    Json序列化与反序列化

    总结来说,JSON序列化与反序列化是现代Web开发中不可或缺的一部分,它提供了数据交换的标准格式,使得不同语言和平台之间的数据交互变得简单高效。正确理解和使用这一技术,能够极大地提升开发效率和软件的可维护性...

    Json序列化和反序列化

    在C#中,处理JSON序列化和反序列化有多种方法,本篇文章将深入探讨这一主题。 1. .NET框架内置支持 .NET Framework 4.0及更高版本引入了`System.Json`命名空间,提供了一些基本的JSON操作。然而,这个命名空间现在...

    C#中二进制数组转换,二进制序列化和json序列化方法

    本篇将深入探讨如何在C#中进行二进制数组与常规数组之间的转换,以及二进制序列化和JSON序列化的应用及其反序列化过程。 首先,让我们来看看二进制数组与常规数组之间的转换。在C#中,二进制数组通常用byte[]表示,...

    C#JSon XML序列化与反序列化工具

    本文将详细讲解C#中JSON和XML的序列化与反序列化工具,以及如何自制一个实用的解析工具。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。在...

    将dataset json序列化和反序列化成dataset (非常不容易做完了)

    .net 将dataset json序列化和反序列化成dataset JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - ...

    C#和Java的序列化反序列化

    Java中,除了基本的序列化机制,还有许多第三方库如Jackson、Gson等,它们提供了更高效、更灵活的JSON序列化和反序列化功能。例如,Jackson库的`ObjectMapper`类能够方便地将Java对象转换为JSON字符串,反之亦然。 ...

    .net 序列化和反序列化 Json

    .NET框架中的序列化和反...总之,理解和掌握.NET中的JSON序列化和反序列化是开发Web服务和客户端应用的关键技能,无论选择使用内置方法还是第三方库如Json.NET,都需要根据项目需求来权衡性能、功能和依赖管理等因素。

    C# 各种序列化和反序列化

    C#提供了Newtonsoft.Json库(也称为Json.NET),这是一个功能强大的JSON库,可以方便地进行JSON序列化和反序列化。例如,通过JsonConvert类的SerializeObject和DeserializeObject方法,可以轻松地在C#对象和JSON字符...

    在unity用于json的序列化和反序列化插件(适用语言c#)

    要使用Json.NET在Unity中进行JSON序列化和反序列化,首先需要导入JsonNet.9.0.1.unitypackage文件。这个包包含了Json.NET库的Unity版本,确保与引擎兼容。导入后,可以在C#脚本中引用Newtonsoft.Json命名空间,这样...

    C#序列化和反序列化案例.rar

    最常用的序列化类型包括XML序列化(XmlSerializer)、JSON序列化(JavaScriptSerializer或Newtonsoft.Json库)和二进制序列化(BinaryFormatter)。在这个案例中,可能是通过BinaryFormatter或XmlSerializer将对象的...

    json反序列化

    `Newtonsoft.Json.dll` 是Json.NET库的二进制文件,包含所有必要的类型和方法,如`JsonSerializer`、`JsonConvert`等,用于处理JSON序列化和反序列化操作。在项目中引用这个库后,就可以使用它的功能。 下面是一个...

    C# JSON 序列化源码

    C# JSON 序列化源码 //源码来源: CodeBetter.Json //修改说明: 修正几个错误,加入字典的反序列化 //技术联系: yandefu@163.com 如果使用中有问题,或者有修改升级有空通知一下

    Json.net在后台对Json序列化和反序列化

    Json.NET是.NET开发中广泛使用的第三方库,由James Newton-King 开发,它提供了一套高效且功能丰富的JSON序列化和反序列化的解决方案。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web...

Global site tag (gtag.js) - Google Analytics