C#-对象与JSON字符串互相转换的三种方式_第1页
C#-对象与JSON字符串互相转换的三种方式_第2页
C#-对象与JSON字符串互相转换的三种方式_第3页
C#-对象与JSON字符串互相转换的三种方式_第4页
C#-对象与JSON字符串互相转换的三种方式_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

------------------------------------------------------------------------C#-对象与JSON字符串互相转换的三种方式C#对象与JSON字符串互相转换的三种方式JSON(JavaScript

ObjectNotation,JS对象标记)是一种轻量级的数据交换格式。关于内存对象和JSON字符串的相互转换,在实际项目中应比较广泛,经过一番搜索,找到如下三种方法来解决此问题分别是使用

Newtonsoft.Json.dll、DataContractJsonSerializer、

JavaScriptSerializer。

方法一:

Newtonsoft.Json.dll

Newtonsoft.Json.dll在.net2.0之后的版本可以支持我的版本.netframework4.0添加Newtonsoft.json的引用对象与json字符串转换类设计1classJsonNewtonsoft2{3///<summary>4///把对象转换为JSON字符串5///</summary>6///<paramname="o">对象</param>7///<returns>JSON字符串</returns>8publicstaticstringToJSON(thisobjecto)9{10if(o==null)11{12returnnull;13}14returnJsonConvert.SerializeObject(o);15}16///<summary>17///把Json文本转为实体18///</summary>19///<typeparamname="T"></typeparam>20///<paramname="input"></param>21///<returns></returns>22publicstaticTFromJSON<T>(thisstringinput)23{24try25{26returnJsonConvert.DeserializeObject<T>(input);27}28catch(Exceptionex)29{30returndefault(T);31}32}33}方法二:DataContractJsonSerializer

使用这种需要引用

System.Runtime.Serialization.dll类设计1classJsonDataContractJsonSerializer2{3///<summary>4///内存对象转换为json字符串5///</summary>6///<paramname="obj"></param>7///<returns></returns>8publicstaticstringObjectToJson(objectobj)9{10DataContractJsonSerializerserializer=newDataContractJsonSerializer(obj.GetType());11MemoryStreamstream=newMemoryStream();12serializer.WriteObject(stream,obj);13byte[]dataBytes=newbyte[stream.Length];14stream.Position=0;15stream.Read(dataBytes,0,(int)stream.Length);16returnEncoding.UTF8.GetString(dataBytes);17}18///<summary>19///Json字符串转内存对象20///</summary>21///<paramname="jsonString"></param>22///<paramname="obj"></param>23///<returns></returns>24publicstaticobjectJsonToObject(stringjsonString,objectobj)25{26DataContractJsonSerializerserializer=newDataContractJsonSerializer(obj.GetType());27MemoryStreammStream=newMemoryStream(Encoding.UTF8.GetBytes(jsonString));28returnserializer.ReadObject(mStream);29}30}方法三:JavaScriptSerializer需要引用:System.Web.Extensions.dll类设计1publicstaticclassJsonJavaScriptSerializer2{3///<summary>4///内存对象转换为json字符串5///</summary>6///<paramname="obj"></param>7///<returns></returns>8publicstaticstringToJSON(objectobj)9{10StringBuildersb=newStringBuilder();11JavaScriptSerializerjson=newJavaScriptSerializer();12json.Serialize(obj,sb);13returnsb.ToString();14}15///<summary>16///Json字符串转内存对象17///</summary>18///<paramname="jsonString"></param>19///<paramname="obj"></param>20///<returns></returns>21publicstaticTFromJSON<T>(stringjsonString)22{23JavaScriptSerializerjson=newJavaScriptSerializer();24returnjson.Deserialize<T>(jsonString);25}2627}程序测试:新建一个测试对象类Student.cs1publicenumSex2{3男=0,4女=15}6[Serializable()]7classStudent8{9privatestring_name;1011publicstringName12{13get{return_name;}14set{_name=value;}15}1617privateint_age;1819publicintAge20{21get{return_age;}22set{_age=value;}23}2425privateSex_sex=Sex.男;2627publicSexSex28{29get{return_sex;}30set{_sex=value;}31}32publicStudent()33{}34publicStudent(stringname,intage,Sexsex)35{36this._name=name;37this._age=age;38this._sex=sex;39}40}测试程序1staticvoidMain(string[]args)2{3Studentst=newStudent("笨男孩",22,Sex.男);45Console.WriteLine("============方法一============================================");6//方法一78Console.WriteLine("方法一对象转Json字符串");9stringjsonStr=JsonNewtonsoft.ToJSON(st);10Console.WriteLine(jsonStr);11Console.WriteLine("方法一Json字符串转对象");12Studentstobj=(Student)JsonNewtonsoft.FromJSON<Student>(jsonStr);13Console.WriteLine("姓名:{0}年龄:{1}性别:{2}",stobj.Name,stobj.Age,stobj.Sex);141516Console.WriteLine("============方法二============================================");17//方法二18Console.WriteLine("方法二对象转Json字符串");19stringjsonStr2=JsonDataContractJsonSerializer.ToJSON(st);20Console.WriteLine(jsonStr2);21Console.WriteLine("方法二Json字符串转对象");22Studentstobj2=(Student)JsonDataContractJsonSerializer.FromJSON(jsonStr2,st);23Console.WriteLine("姓名:{0}年龄:{1}性别:{2}",stobj2.Name,stobj2.Age,stobj2.Sex);242526Console.WriteLine("============方法三=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论