1 JavaScriptSerializer
无须标记就可以进行序列化。
//对象无须标记也可以进行转Json序列化
public static string GetUnknownJson(object value){
if (value == null) return null;
JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.MaxJsonLength = Int32.MaxValue;
return serializer.Serialize(value);
}
2 DataContractJsonSerializer
使用DataContractJsonSerializer对象进行序列化时,被序列化的对象必须带有[DataContract, Serializable]标记,其成员属性必须带有[DataMember]标记。
namespace Com{
[DataContract, Serializable]
public class ThisFileInfo{
[DataMember]
public string Path { get; set; }
[DataMember]
public string FileName { get; set; }
[DataMember]
public DateTime CreateTime { get; set; }
}
}
//对象必须有标记也可以进行转Json序列化
public static string GetJson<T>(T obj){
if (obj == null) return null;
DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream stream = new MemoryStream()){
json.WriteObject(stream, obj);
return Encoding.UTF8.GetString(stream.ToArray(), 0, stream.ToArray().Length);
}
}