本文实例讲述了C#实现JSON和对象之间互相转换功能。分享给大家供大家参考,具体如下:
1.首先是声明用户信息对象,DataContract修饰类,表示可以被解析成JSON,DataMember修饰属性,Order表示 解析的顺序,另外Lover是数组列表,表示女朋友个数
Address 表示送货地址,DailyRecord 表示日常记录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; namespace FunctionTest.Model { [DataContract] public class UserInfo { [DataMember(Order =0)] public string UserName { get ; set ; } [DataMember(Order = 1)] public int Age { get ; set ; } [DataMember(Order = 2)] public int Gender { get ; set ; } [DataMember(Order =3)] public List< string > Lover { get ; set ; } [DataMember(Order = 4)] public ContactAddress Address { get ; set ; } [DataMember(Order = 5)] public Dictionary< string , string > DailyRecord { get ; set ; } } [DataContract] public class ContactAddress { [DataMember(Order =0)] public string Province { get ; set ; } [DataMember(Order = 1)] public string City { get ; set ; } [DataMember(Order = 2)] public string Country { get ; set ; } [DataMember(Order = 3)] public string Details { get ; set ; } } } |
2.JSON帮助类 核心代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/// <summary> /// Json转换成对象 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="jsonText"></param> /// <returns></returns> public static T JsonToObject<T>( string jsonText) { DataContractJsonSerializer s = new DataContractJsonSerializer( typeof (T)); MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonText)); T obj = (T)s.ReadObject(ms); ms.Dispose(); return obj; } /// <summary> /// 对象转换成JSON /// </summary> /// <typeparam name="T"></typeparam> /// <param name="obj"></param> /// <returns></returns> public static string ObjectToJSON<T>(T obj) { DataContractJsonSerializer serializer = new DataContractJsonSerializer( typeof (T)); string result = string .Empty; using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, obj); ms.Position = 0; using (StreamReader read = new StreamReader(ms)) { result = read.ReadToEnd(); } } return result; } |
3.调用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
//1.对象-->JSON UserInfo info = new UserInfo { Age = 10, Gender = 1, UserName = "刘德华" , Lover = new List< string > { "美女1" , "美女2" , "美女3" }, Address = new ContactAddress { Province = "湖南省" , City = "长沙市" , Country = "望城县" , Details = "某旮旯快递找不到的地方" }, DailyRecord = new Dictionary< string , string > { { "星期一" , "吃饭" }, { "星期二" , "洗衣服" }, { "星期三" , "好事情" } } }; string json = ObjectToJSON<UserInfo>(info); |
4.反序列化后的结果
复制代码 代码如下:
{"UserName":"刘德华","Age":10,"Gender":1,"Lover":["美女1","美女2","美女3"],"Address":{"Province":"湖南省","City":"长沙市","Country":"望城县","Details":"某旮旯快递找不到的地方"},"DailyRecord":[{"Key":"星期一","Value":"吃饭"},{"Key":"星期二","Value":"洗衣服"},{"Key":"星期三","Value":"好事情"}]}
希望本文所述对大家C#程序设计有所帮助。
原文链接:http://www.cnblogs.com/HCCZX/p/5238556.html