C# 中使用JSON - DataContractJsonSerializer
生活随笔
收集整理的這篇文章主要介紹了
C# 中使用JSON - DataContractJsonSerializer
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C#中使用JSON不需要使用第三方庫(kù),使用.NET Framwork3.5自帶的System.Runtime.Serialization.Json即可很好的完成JSON的解析。
關(guān)于JSON的入門(mén)介紹見(jiàn)(首頁(yè)的圖很形象):
http://www.json.org/?
一、Using
需要添加引用:System.ServiceModel.Web 和 System.Runtime.Serialization,然后使用Using:
usingSystem.Runtime.Serialization.Json;usingSystem.Runtime.Serialization;?二、定義序列化的類
假如我們要轉(zhuǎn)化的JSON字符串格式為:
{"encoding":"UTF-8","plug-ins":["python","c++","ruby"],"indent":{"length":3,"use_space":true????}
}
然后編寫(xiě)相應(yīng)的序列化的類,注意下面類加的Attribute:
[DataContract(Namespace?=?"http://coderzh.cnblogs.com")]class?Config{
????[DataMember(Order?=?0)]public?string?encoding?{?get;?set;?}
????[DataMember(Order?=?1)]public?string[]?plugins?{?get;?set;?}
????[DataMember(Order?=?2)]public?Indent?indent?{?get;?set;?}
}
[DataContract(Namespace?=?"http://coderzh.cnblogs.com")]class?Indent
{
????[DataMember(Order?=?0)]public?int?length?{?get;?set;?}
????[DataMember(Order?=?1)]public?bool?use_space?{?get;?set;?}
}
三、對(duì)象轉(zhuǎn)化為JSON字符串
使用WriteObject方法:
var?config?=?new?Config(){?????????????????????????encoding?=?"UTF-8",
?????????????????????????plugins?=?new?string[]{"python",?"C++",?"C#"},
?????????????????????????indent?=?new?Indent(){?length?=?4,?use_space?=?false}
?????????????????????????};
var?serializer?=?new?DataContractJsonSerializer(typeof(Config));
var?stream?=?new?MemoryStream();
serializer.WriteObject(stream,?config);byte[]?dataBytes?=?new?byte[stream.Length];
stream.Position?=?0;
stream.Read(dataBytes,?0,?(int)stream.Length);string?dataString?=?Encoding.UTF8.GetString(dataBytes);
Console.WriteLine("JSON?string?is:");
Console.WriteLine(dataString);
四、JSON字符串轉(zhuǎn)對(duì)象
使用ReadObject方法:?
var?mStream?=?new?MemoryStream(Encoding.Default.GetBytes(dataString));Config?readConfig?=?(Config)serializer.ReadObject(mStream);
Console.WriteLine("Encoding?is:?{0}",?readConfig.encoding);foreach?(string?plugin?in?readConfig.plugins)
{
????Console.WriteLine("plugins?is:?{0}",?plugin);
}
Console.WriteLine("indent.length?is:?{0}",?readConfig.indent.length);
Console.WriteLine("indent.use_space?is:?{0}",?readConfig.indent.use_space);
?五、輸出結(jié)果:
JSON?stringis:{"encoding":"UTF-8","plugins":["python","C++","C#"],"indent":{"length":4,"use_space":false}}
Encoding?is:?UTF-8
plugins?is:?python
plugins?is:?C++
plugins?is:?C#
indent.length?is:?4
indent.use_space?is:?False
總結(jié)
以上是生活随笔為你收集整理的C# 中使用JSON - DataContractJsonSerializer的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 固态硬盘和机械硬盘的区别哪个寿命长(固态
- 下一篇: 史铁生励志故事100字(史铁生的故事10