.net FrameWork 3.5 内置了对JSON的支持,我们可以直接使用。
一。准备
首先引用:System.ServiceModel.Web.dll ,System.Runtime.Serialization.dll 。
然后在using里
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
二。编写需要序列化的类
using System.Runtime.Serialization;
namespace Dockty.Data
{
[DataContract(Namespace = "http://www.dockty.com")]
public class ArtTags
{
public ArtTags() { }
[DataMember(Order = 0)]
public int ID { get; set; }
[DataMember(Order = 1)]
public int TagID { get; set; }
[DataMember(Order = 2)]
public int ArtID { get; set; }
}
}
定义好要序列化的对象和顺序。
三。JSON帮助类
using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;
namespace Dockty.Data
{
public static class JsonHelper<T>
{
static JsonHelper()
{ }
/// <summary>
/// 序列化为JSON对象
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static string WriteObject(T obj)
{
var serializer = new DataContractJsonSerializer(typeof(T));
var mstream = new MemoryStream();
serializer.WriteObject(mstream, obj);
byte[] Bytes = new byte[mstream.Length];
mstream.Position = 0;
mstream.Read(Bytes, 0, (int)mstream.Length);
return Encoding.UTF8.GetString(Bytes);
}
/// <summary>
/// JSON对象反序列化
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static T ReadObject(string data)
{
var mstream = new MemoryStream(Encoding.UTF8.GetBytes(data));
var serializer = new DataContractJsonSerializer(typeof(T));
return (T)serializer.ReadObject(mstream);
}
}
}
四。序列化与反序列化
ArtTags tags = new ArtTags() { ArtID = 1, ID = 1, TagID = 1 };
//序列化
string strTags = JsonHelper<ArtTags>.WriteObject(tags);
//反序列化
ArtTags newTags = JsonHelper<ArtTags>.ReadObject(strTags);
作者 Dockty