1.首先建一个WebService程序
[WebMethod]
public string HelloWorld()
{
CommonData.Json.ObjectSerialization ser = new CommonData.Json.ObjectSerialization();
Student stu = new Student();
stu.Id = 1;
stu.Name = "hechen";
string json = ser.EntityToJson(stu);
return json;
}
}
[System.Web.Script.Services.ScriptService] 这里得注意,默认情况下这个特性是注释起来的,如果想用Javascript来调用WebService 就要取消这个注释
WebService 的内容不必多说,用Jquery调用WebService 返回肯定是一个xml。而xml是说明文件,而不是具体方法返回的值,所以我们做适当的处理。我们这里WebService方法返回的是JSON数据,以便在前台解析。下载是实体类序列化JSON的代码。
2. 实体对象序列化JSON
{
public class ObjectSerialization
{
private object _entity;
///
/// 被序列化得实体对象
///
public object Entity
{
get { return _entity; }
set { _entity = value; }
}
private string _jsonData;
///
/// 被转化为json格式数据的对象
///
public string JsonData
{
get { return _jsonData; }
set { _jsonData = value; }
}
///
/// 无参数构造方法
///
public ObjectSerialization()
{
}
///
/// 有参数构造方法
///
/// <param name="entity">要被序列化得实体对象
public ObjectSerialization(object entity)
{
this._entity = entity;
}
///
/// 序列化实体对象
///
///
public string EntityToJson()
{
var serializer = new DataContractJsonSerializer(Entity.GetType());
MemoryStream ms = new MemoryStream();
serializer.WriteObject(ms,Entity);
byte[] myByte = new byte[ms.Length];
ms.Position = 0;
ms.Read(myByte,(int)ms.Length);
string dataString = Encoding.UTF8.GetString(myByte);
return dataString;
}
///
/// 序列化实体对象
///
/// <param name="entity">要被序列化得实体对象
///
public string EntityToJson(object entity)
{
this._entity = entity;
return EntityToJson();
}
///
/// 将Json格式数据转换为对象
///
///
public T GetObjectJson
{
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(JsonData));
var serializer = new DataContractJsonSerializer(typeof(T));
T t = (T)serializer.ReadObject(ms);
return t;
}
///
/// 将Json格式数据转换为对象
///
/// <param name="jsonData">json数据格式
///
public T GetObjectJson
{
this._jsonData = jsonData;
return GetObjectJson
}
}
}
注意序列化实体必须用可序列化特性修饰,如Serialiable,否则它不能序列化为JSON数据字符串