从网上搜索的各类信息组合起来,希望对各位码农有帮助,节省时间吧
1.基础类
[Serializable]
public class CBase
{
[JsonConverter(typeof(ImageConverter))]
public Image Img
{ get; set; }
}
2.定义了JsonConverter,用来把图片转化成Base64格式的可序列化的字符串
public class ImageConverter : Newtonsoft.Json.JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType == typeof(Bitmap);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var m = new MemoryStream(Convert.FromBase64String((string)reader.Value));
return (Bitmap)Bitmap.FromStream(m);
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
Bitmap bmp = (Bitmap)value;
MemoryStream m = new MemoryStream();
bmp.Save(m, System.Drawing.Imaging.ImageFormat.Jpeg);
writer.WriteValue(Convert.ToBase64String(m.ToArray()));
}
}
3.Json序列化
//把对象序列化
string jsonStr = JsonConvert.SerializeObject(obj); //序列化对象
4.Json反序列化
public static T ParseJson<T>(string jsonstr)
{
return JsonConvert.DeserializeObject<T>(jsonstr);
}
//直接调用,反序列化到对象
CBase b=ParseJson<CBase>(jsonstr);