DataContractJsonSerializer类

DataContractJsonSerializer类同样是提供JSON序列化的类。而且貌似有几个方法还和XML有点点关系。

  注意用此类要引用System.ServiceModel.Web.dll与System.Runtime.Serialization.dll

  1、属性

  DataContractSurrogate       获取给定 IDataContractSurrogate 实例的当前活动代理项类型。代理项可以扩展序列化或反序列化过程。   

IgnoreExtensionDataObject     获取一个值,指定在反序列化时是否忽略未知数据以及在序列化时是否忽略 IExtensibleDataObject 接口。   

KnownTypes             获取一个类型集合,这些类型可呈现在使用此 DataContractJsonSerializer 实例序列化的对象图中。   

MaxItemsInObjectGraph        获取序列化程序通过一次读取或写入调用在对象图中序列化或反序列化的最大项数。

  2、方法

  IsStartObject     已重载。 获取一个值,该值指定序列化程序是否可以读取对象。   

ReadObject        已重载。 反序列化 JSON(JavaScript 对象表示法)数据,并返回反序列化的对象。   

WriteEndObject     已重载。 将结束 XML 元素写入可映射到 JavaScript 对象表示法 (JSON) 的 XML 文档。   

WriteObject       已重载。 将对象序列化为 JavaScript 对象表示法 (JSON) 文档。   

WriteObjectContent   已重载。 将对象内容写入可映射到 JavaScript 对象表示法 (JSON) 的 XML,而不写入包装元素。   

WriteStartObject    已重载。 写入开始 XML 元素,以便将对象序列化为可映射到 JavaScript 对象表示法 (JSON) 的 XML。

  例子:

  class Program
    {
        static void Main(string[] args)
        {
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Person));
            //最常用的两个方法
            string str = "{\"Id\":1,\"Name\":\"刘备\",\"Age\":\"23\"}";
            Person p;
            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(str)))     //构造函数能够接受Stream参数,因此你可以用内存流,文件流等等创建
            {
                p = serializer.ReadObject(ms) as Person;
            }
            Console.WriteLine(p.Name);      //输出刘备

            Person p2 = new Person(2, "关羽", 23);
            byte[] byteArr;
            using (MemoryStream ms = new MemoryStream())
            {
                serializer.WriteObject(ms, p2);

                byteArr = ms.ToArray();
            }
            Console.WriteLine(Encoding.UTF8.GetString(byteArr));    //输出 {"Age":23,"Id":1,"Name":"关羽"}

            Console.WriteLine(serializer.MaxItemsInObjectGraph);    //2147483647 获取序列化程序通过一次读取或写入调用在对象图中序列化或反序列化的最大项数。
            Console.WriteLine(serializer.DataContractSurrogate);    //输出 空白
            Console.WriteLine(serializer.IgnoreExtensionDataObject);    //False 反序列化时是否忽略未知数据以及在序列化时是否忽略 IExtensibleDataObject 接口。
            Console.WriteLine(serializer.KnownTypes.Count);     //输出 0  一个类型集合,这些类型可呈现在使用此 DataContractJsonSerializer 实例序列化的对象图中。 

             //IsStartObject 已重载。 获取一个值,该值指定序列化程序是否可以读取对象。
             //WriteEndObject 已重载。 将结束 XML 元素写入可映射到 JavaScript 对象表示法 (JSON) 的 XML 文档。
             //WriteObjectContent 已重载。 将对象内容写入可映射到 JavaScript 对象表示法 (JSON) 的 XML,而不写入包装元素。
             //WriteStartObject 已重载。 写入开始 XML 元素,以便将对象序列化为可映射到 JavaScript 对象表示法 (JSON) 的 XML。 

            Console.ReadKey();
        }
    }

    [DataContract]      //对于使用DataContractJsonSerializer类而言,该属性是必须的
    public class Person
    {
        public Person(int id,string name,int age)
        {
            Id = id;
            Age = age;
            Name = name;
        }

        [DataMember] //对于使用DataContractJsonSerializer类而言,该属性是必须的
        public int Id
        {
            get;
            set;
        }
        [DataMember]
        public string Name
        {
            get;
            set;
        }
        [DataMember]
        public int Age
        {
            get;
            set;
        }
    }
时间: 2024-12-29 23:53:37

DataContractJsonSerializer类的相关文章

不同FrameWork版本中datacontractjsonserializer 类的使用

json的序列化需要用到DataContractJsonSerializer类,在命名空间System.Runtime.Serialization.Json;下. .NET Framework 3.5需要添加System.ServiceModel.Web引用: .NET Framework 4需要添加System.Runtime.Serialization引用.

ASP.NET 中JSON 的序列化和反序列化

JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理. 一.JSON简介: JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大括号''{}'

JsonHellper

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Runtime.Serialization.Json; using System.IO; using System.Text; /// <summary> /// JSON序列化和反序列化辅助类 /// </summary> public class JsonHelper { /// &l

C#读写Json

C#处理json文件主要有两种方式: (1)使用JavaScriptSerializer类,需要引入System.Web.Extension库,并添加下面两个引用: using System.Web; using System.Web.Script.Serialization; 主要代码如下所示: public class Data { public int Id { get; set; } // [ScriptIgnore] public string Name { get; set; } p

C#中,Json的序列化和反序列化的几种方式总结

什么是JSON? JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write and easy for machines to parse and generate. JSON is a text format that is completely language independent. 翻译:Json[javascrip

Json的序列化与反序列化

想想某一天,你在看LOL攻略的时候,系统突然崩溃了,接着浏览器出现了密密麻麻的LOL帐号和密码,你一定在想:"天啊,这次要发财了,说不定里面有超凡号或者王者号,我得赶紧全部记下来."然而说完你就惊呆了,那么多的帐号密码,而且全部写在了Json里面,一个一个复制粘贴要记到什么时候啊...如果这时候我在你身边,我一定会帮助你的,前提是,要分几个王者号给我噢...  言归正传. 上面举的例子虽然有点不太现实,但其实是想和大家说明一个问题,如果要解析Json或XML,请不要使用检索字符串的方式

在C#中,Json的序列化和反序列化的几种方式总结

在这篇文章中,我们将会学到如何使用C#,来序列化对象成为Json格式的数据,以及如何反序列化Json数据到对象. 首先,解释一下json Json[javascript对象表示方法],它是一个轻量级的数据交换格式,我们可以很简单的来读取和写它,并且它很容易被计算机转化和生成,它是完全独立于语言的. Json支持下面两种数据结构: 键值对的集合--各种不同的编程语言,都支持这种数据结构: 有序的列表类型值的集合--这其中包含数组,集合,矢量,或者序列,等等. Json有下面几种表现形式 1.对象

DotNet的JSON序列化与反序列化

JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.在现在的通信中,较多的采用JSON数据格式,JSON有两种表示结构,对象和数组,JSON 数据的书写格式是:名称/值对. 在vs解决方案中以前采用xml树的形式,组织项目的结构.在新的.net core中,项目的解决方案采用json作为项目的结构说明. 在.net的前后台数据交互中,采用序列化对象为json,前端ajax接受传输数据,反序列化为对象,在

C#中Json的简单处理

命名空间:Windows.Data.Json在Windows Runtime中,可以使用Json类对获取的Json字符串进行操作,相比DataContractJsonSerializer类操作更加直观.例如获取一个绕口令API返回的Json中的对象: //返回的Json字符串: { "code":200, "msg":"success", "newslist":[ { "content":"小刘和