[asp.net]C#实现json的序列化和反序列化

简介:

在做asp.net和unity进行http通信的时候,当unity客户端发出表单请求的时候,我要将他要请求的数据以json的格式返回给客户端,让客户端来解析。服务器端这一块就涉及到json的序列化和反序列化的问题。

接下来就来举个列子,当然包括两种方法(本篇参考自:http://www.csharpwin.com/csharpspace/10822r2908.shtml)

两种方法都有例子,第一种是用泛型集合来存储的对象,然后将集合序列化一下;第二种是直接序列化的一个对象

using System; using System.Collections.Generic; using System.Web.Script.Serialization; using System.Configuration; using System.Runtime.Serialization.Json; using System.Runtime.Serialization; using System.IO; using System.Text;   namespace WebApplication1 {      //方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化     [Serializable]     public class Person     {                  private int id;         /// <summary>         /// id         /// </summary>         public int Id         {             get { return id; }             set { id = value; }         }          private string name;         /// <summary>         /// 姓名         /// </summary>         public string Name         {             get { return name; }             set { name = value; }         }     }      //方法二:引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化     //可以使用IgnoreDataMember:指定该成员不是数据协定的一部分且没有进行序列化,DataMember:定义序列化属性参数,使用DataMember属性标记字段必须使用DataContract标记类 否则DataMember标记不起作用。     [DataContract]     public class Person1     {                  [IgnoreDataMember]         public int Id { get; set; }          [DataMember(Name = "name")]         public string Name { get; set; }         [DataMember(Name = "sex")]         public string Sex { get; set; }      }      public partial class _Default : System.Web.UI.Page     {         string constr = ConfigurationManager.ConnectionStrings["connstr"].ConnectionString;                  protected void Page_Load(object sender, EventArgs e)         {                          Person p1 = new Person();             p1.Id = 1;             p1.Name = "dxw";             Person p2 = new Person();             p2.Id = 2;             p2.Name = "wn";              List<Person> listperson = new List<Person>();             listperson.Add(p1);             listperson.Add(p2);              JavaScriptSerializer js = new JavaScriptSerializer();             //json序列化             string s = js.Serialize(listperson);             Response.Write(s);                //方法二             Person1 p11 = new Person1();             p11.Id = 1;             p11.Name = "hello";             p11.Sex = "男";             DataContractJsonSerializer json = new DataContractJsonSerializer(p11.GetType());              string szJson = "";              //序列化              using (MemoryStream stream = new MemoryStream())              {                  json.WriteObject(stream, p11);                  szJson = Encoding.UTF8.GetString(stream.ToArray());                  Response.Write(szJson);             }              //反序列化              //using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szJson)))              //{              //    DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(People));              //    Person1 _people = (Person1)serializer.ReadObject(ms);              //}          }                    protected void Button1_Click(object sender, EventArgs e)         {             Response.Write(constr);         }       }


输出的结果:



==================== 迂者 丁小未 CSDN博客专栏=================

MyBlog:http://blog.csdn.net/dingxiaowei2013             MyQQ:1213250243

Unity QQ群:858550         cocos2dx QQ群:280818155

====================== 相互学习,共同进步 ===================

转载请注明出处:http://blog.csdn.net/dingxiaowei2013/article/details/17240085

欢迎关注我的微博: http://weibo.com/u/2590571922














相关文章
|
16天前
|
XML JSON 数据处理
C# 中的 XML 与 JSON 数据处理
在现代软件开发中,数据交换和存储需求日益增长,XML 和 JSON 成为最常用的数据格式。本文从 C# 角度出发,详细介绍如何处理这两种格式,并提供示例代码。对于 XML,我们介绍了读取、创建和写入 XML 文件的方法;对于 JSON,则展示了如何使用 Newtonsoft.Json 库进行数据解析和序列化。此外,文章还总结了常见问题及其解决方案,帮助开发者更好地应对实际项目中的挑战。
159 61
C# 中的 XML 与 JSON 数据处理
|
2天前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
34 0
|
2月前
|
JSON 开发框架 JavaScript
【Azure Developer】使用.Net Core解析JSON的笔记
【Azure Developer】使用.Net Core解析JSON的笔记
|
2月前
|
开发框架 前端开发 .NET
C# Newtonsoft.Json.Formatting DateTime 日期格式化
C# Newtonsoft.Json.Formatting DateTime 日期格式化
33 0
|
4月前
|
JSON 数据格式 微服务
.NET下 支持大小写不敏感的JSON Schema验证方法
有很多应用程序在验证JSON数据的时候用到了JSON Schema。 在微服务架构下,有时候各个微服务由于各种历史原因,它们所生成的数据对JSON Object属性名的大小写规则可能并不统一,它们需要消费的JSON数据的属性名可能需要大小写无关。 遗憾的是,目前的JSON Schema没有这方面的标准,标准中都是大小写敏感的。在类似上述情况下,这给使用JSON Schema进行数据验证造成了困难。
|
5月前
|
XML 存储 JSON
c#XML、JSON的序列化和反序列化,看完你就懂了
c#XML、JSON的序列化和反序列化,看完你就懂了
83 0
|
5月前
|
JSON C# 数据格式
C# 处理gzip格式的json
C# 处理gzip格式的json
76 0
|
5月前
|
XML 存储 JSON
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)
开发时经常会遇到需要保存配置的情况,最常见的实现方式是将对象序列化成Json,再写入文件并保存到本地磁盘。 本文将使用开源库**ApeFree.DataStore**来替换原有的对象存储过程,实现一个可以随意切换存储方式的对象存储方法。 ApeFree.DataStore是一款可配置的对象存储库,支持在不同平台/介质中对内存中的对象进行存储与还原(如本地存储、注册表存储)。支持配置序列化格式(如Json、Xml),支持配置压缩算法(如GZip、Defalte),支持配置加密算法(如AES、RSA)。
114 0
C# 对象存储 (轻松实现序列化 | Xml | Json | 加密 | 压缩 | 注册表 | Redis)
|
5月前
|
XML 存储 JSON
C# | 使用Json序列化对象时忽略只读的属性
将对象序列化成为Json字符串是一个使用频率非常高的功能。Json格式具有很高的可读性,同时相较于XML更节省空间。 在开发过程中经常会遇到需要保存配置的场景,比如将配置信息保存在配置类型的实例中,再将这个对象序列化成为Json字符串并保存。当需要加载配置时,则是读取Json格式的字符串再将其还原成配置对象。在序列化的过程中,默认会将所有公开的属性和字段都序列化进入Json字符串中,这其中也会包含只读的属性或字段,而只读的属性和字段在反序列化的过程中其实是无意义的,也就是说这一部分存储是多余的。 本文将讲解如何在执行Json序列化时,忽略掉那些只读的属性和字段。
156 0
C# | 使用Json序列化对象时忽略只读的属性
|
5月前
|
XML 存储 JSON
C# | JSON格式与XML格式互相转换
JSON格式与XML格式是目前互联网上使用最为广泛的数据交换格式之一,而两种格式各自有着自己的特点和优势。 在实际开发中,我们经常需要将数据在不同的系统或模块之间进行传递和转换,而JSON格式和XML格式的互相转换是一项非常基础和必要的技能。 同时,对于需要将数据存储在不同的介质中的应用场景,比如在移动端本地存储数据,或者在服务器端将数据保存到文件或数据库中,也需要将JSON或XML格式进行相应的转换。 因此,熟练掌握JSON与XML格式互相转换的方法对于开发人员来说是非常重要的。在本文中,我们将介绍常用的JSON和XML互相转换的方法及其实现。
95 0
C# | JSON格式与XML格式互相转换