使用微软自带的Json库
方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化
序列化类:Personnel
执行序列化反序列化:
protected void Page_Load(object sender, EventArgs e)
r1输出结果:{"Id":1,"Name":"小白"}
可以使用 ScriptIgnore属性标记不序列化公共属性或公共字段。
r1输出结果:{"Name":"小白"}
方法二:引入 System.Runtime.Serialization.Json命名空间使用 DataContractJsonSerializer类实现序列化
序列化类:People
执行序列化反序列化
szJson输出结果:{"Id":1,"Name":"小白"}
可以使用IgnoreDataMember:指定该成员不是数据协定的一部分且没有进行序列化,DataMember:定义序列化属性参数,使用DataMember属性标记字段必须使用DataContract标记类 否则DataMember标记不起作用。
输出结果: {"id":1}
附 :泛型json序列化类
namespace Communication
{
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Json;
using System.Text;
/// <summary>
/// Serialize and deserialize JSON object.
/// </summary>
internal class JsonHelper
{
/// <summary>
/// Initializes a new instance of the <see cref="JsonHelper" /> class.
/// </summary>
public JsonHelper()
{
}
/// <summary>
/// serialize object to JSON object.
/// </summary>
/// <typeparam name="T">the type of the serializing target.</typeparam>
/// <param name="obj">the instance of the serializing target.</param>
/// <returns>JSON string.</returns>
public static string GetJson<T>(T obj)
{
DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms = new MemoryStream())
{
json.WriteObject(ms, obj);
string szjson = Encoding.UTF8.GetString(ms.ToArray());
return szjson;
}
}
/// <summary>
/// de-serialize object to JSON object.
/// </summary>
/// <typeparam name="T">the type of the de-serializing target.</typeparam>
/// <param name="szjson">the JSON string</param>
/// <returns>the instance of the de-serializing target.</returns>
public static T ParseFormJson<T>(string szjson)
{
T obj = Activator.CreateInstance<T>();
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(szjson)))
{
DataContractJsonSerializer dcj = new DataContractJsonSerializer(typeof(T));
return (T)dcj.ReadObject(ms);
}
}
}
}
还可以使用Json.net进行Json序列化
这里下载:http://www.newtonsoft.com/products/json/
原文:http://www.cnblogs.com/luohengstudy/p/4193151.html