在.NET使用JSON作为数据交换格式实例演示

2019-05-20 10:52:01于丽

//JsonConvert类在NewtonsoftJsonNetdll中,注意到http://wwwcodeplexcom/json/下载这个dll并添加这个引用
//JSON序列化
string result = JsonConvertSerializeObject(user);
ConsoleWriteLine("使用JsonConvert序列化后的结果:{0},长度:{1}", result, resultLength);
//使用Linq to JSON
JObject jobject = JObjectParse(result);
JToken token = jobject["Urls"];
List<string> urlList =new List<string>();
foreach (JToken t in token)
{
urlListAdd(tToString());
}
ConsoleWrite("使用Linq to JSON反序列化后的结果:[");
for (int i =0; i < urlListCount -1;i++ )
{
ConsoleWrite(urlList[i] +",");
}
ConsoleWriteLine(urlList[urlListCount -1] +"]");
}
}
[DataContract]
publicclass User
{
///<summary>
/// 编号
///</summary>
[DataMember]
publicint UserId { get; set; }
///<summary>
/// 用户名
///</summary>
[DataMember]
publicstring UserName { get; set; }
///<summary>
/// 创建时间
///</summary>
[DataMember]
[JsonConverter(typeof(IsoDateTimeConverter))]
public DateTime CreateDate { get; set; }
///<summary>
/// 生日
///</summary>
[DataMember]
[JsonConverter(typeof(JavaScriptDateTimeConverter))]
public DateTime Birthday { get; set; }
///<summary>
/// 相关URL
///</summary>
[DataMember]
public List<string> Urls { get; set; }
///<summary>
/// 薪水
///</summary>
[ScriptIgnore]//使用JavaScriptSerializer序列化时不序列化此字段
[IgnoreDataMember]//使用DataContractJsonSerializer序列化时不序列化此字段
[JsonIgnore]//使用JsonConvert序列化时不序列化此字段
publicint Salary { get; set; }
///<summary>
/// 权利级别
///</summary>
[DataMember]
public Priority Priority { get; set; }
public User()
{
Urls =new List<string>();
}
}
///<summary>
/// 权利级别
///</summary>
publicenum Priority:byte
{
Lowest=0x1,
BelowNormal=0x2,
Normal=0x4,
AboveNormal=0x8,
Highest=0x16
}
}

程序的运行结果如下:
1.使用JavaScriptSerializer序列化后的结果:{"UserId":1,"UserName":"李刚","CreateDate":"/Date(353521211984)/","Birthday":"/Date(-277630788015)/","Urls":[],"Priority":22},长度:127
2.使用JavaScriptSerializer反序列化后的结果:UserId:1,UserName:李刚,CreateDate:1981-3-15 16:20:11,Priority:Highest
3.使用DataContractJsonSerializer序列化后的结果:{"Birthday":"/Date(-277630787953+0800)/","CreateDate":"/Date(353521212046+0800)/","Priority":8,"Urls":[],"UserId":1,"UserName":"李刚"},长度:136
4.使用DataContractJsonSerializer反序列化后的结果:UserId:1,UserName:李刚,CreateDate:1981-3-16 0:20:12,Priority:AboveNormal
5.使用JsonConvert序列化后的结果:{"UserId":1,"UserName":"李刚","CreateDate":"1981-03-16T00:20:12.1875+08:00","Birthday":new Date(-277630787812),"Urls":[],"Priority":2},长度:132