问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何在.Net中中进行Json序列化?

发布网友 发布时间:2022-05-05 07:49

我来回答

1个回答

热心网友 时间:2022-04-23 04:34

  Json与.Net对象的转换主要可以用System.Web.Script.Serialization.JavaScriptSerializer和System.Runtime.Serialization.Json.DataContractJsonSerializer这两个类。此外也可以用第三方的如Json.Net。  JavaScriptSerializer  JavaScriptSerializer是一个简单的会序列化类里面所有公共的属性和实例字段,它不受System.Runtime.Serialization.IgnoreDataMember,NonSerialized之类的控制,例如对这样一个类Foo:  [Serializable]  [System.Runtime.Serialization.DataContract]  public partial class Foo  {  [System.Runtime.Serialization.DataMember]  public string PageName1 { get; set; }  [System.Runtime.Serialization.IgnoreDataMember]  public string PageName2 { get; set; }  public string PageName3 { get; set; }  [NonSerialized]  public string PageName4;  public string PageName5;  public static string PageName6;  private string PageName7;  }  进行序列化:   var javaScriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();  var jsonString = javaScriptSerializer.Serialize(obj);  会得到类似下面的结果:{\PageName4\:null,\PageName5\:null,\PageName1\:null,\PageName2\:null,\PageName3\:null}   另外JavaScriptSerializer也可以对匿名类型进行序列化。   DataContractJsonSerializer   DataContractJsonSerializer主要用于wcf中,它会受到IgnoreDataMember之类的控制,同样是上边的类,序列化的结果就不一样了:   var dcSerializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Foo));  using (var mem = new System.IO.MemoryStream())  {  dcSerializer.WriteObject(mem, obj);  jsonString = System.Text.Encoding.UTF8.GetString(mem.ToArray());  }  结果是{\PageName1\:null}。因为只有PageName1是DataMember。  如果把类前面的[System.Runtime.Serialization.DataContract]去掉,生成的结果是这样:{\PageName5\:null,\PageName7\:null,\<PageName1k__BackingField\:null,\<PageName2k__BackingField\:null,\<PageName3k__BackingField\:null}可见此时它会无视DataMember特性并且会把私有字段也序列号了,还会在属性的名字上加一些奇怪的东西。  如果把[Serializable]也去掉结果是这样:{\PageName1\:null,\PageName3\:null,\PageName4\:null,\PageName5\:null}此时会无视NonSerialized却没有无视IgnoreDataMember。  所以在使用DataContractJsonSerializer的时候还是建议老老实实的使用DataContract和DataMember来控制想要序列化的东西,一般情况下就用JavaScriptSerializer。  ,本站保留追究责任的权利。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
kmose正确使用方法? 单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 .net(c#)如何提取json json.net将string数据转换为List&lt;&gt;报错 .net怎样解析JSON呢? 《小花仙》是国漫吗? JSON.NET 将对象 序列化为 JSON字符串时,能否指定,某个属性不被转化。 小花仙花之法典里有哪些花精灵王 使用json.net做uwp开发时,怎样判断一个json字符串中的某个数组成员是否... 小花仙动画片的花之法典一共有多少个花精灵王和各各花精灵王代表的花的名称 将json字符串用json.net转成对象 请问小花仙中的花仙精灵王哪个最厉害 c#使用json.net处理如下json字符串,将其转换为json对象, 小花仙里哪五个是花之法典的阵守精灵? 花之法典中哪个花仙精灵王的能力最强 小花仙的镇守花之法典有哪些花精灵王? 小花仙璎珞是什么精灵王 卡通片的小花仙的花之法典一共有多少个精灵王? 三星c7怎么设置铃声 刚上市的三星c7手机怎么设置铃声 三星c7pro怎么把音乐设置铃声 三星C7如何设置系统铃声? GPA不够,申请留学本科成功的案例有多少?都是怎么弥补的? c#使用json.net处理json字符数组,不知道json数组中的一个json字符串中包含的对象有哪些? 如何成功申请英国留学 圣安德鲁斯大学成功案例分享 net中json序列化组件哪个好 .net 数据表转换成json 读本科的同学有用过美国留学中介吗?申请成功的案例有吗? 如何将C#/.NET 将json字符串格式数据转换成对象 留学申请哪里通过率高些? 瑞士留学申请条件的学院成功案例有哪些解析 想申请牛津硕士,留学机构有申请案例吗 西安申友留学申请的怎么样?我看案例美国商科申的比较多?不知道理工科怎么样? 留学360杨煜姬老师有哪些申请成功案例? 美国留学硕士申请方案有哪些 优越留学怎样,申请英国留学实力如何 上策留学申请美国offer的能力怎样? 谁给我一个玫瑰的符号,我要改网名,我弄不出来。 唯泪 毒玫瑰 加一些特殊符号,网名 QQ昵称玫瑰花怎么打 求上海搪瓷二厂的简介. 原上海搪瓷二厂[凤凰搪瓷电器厂]现退管会所在地在什么地方