C# 将包含System.Drawing.Image的对象序列化为json

C# 将包含System.Drawing.Image的对象序列化为json,c#,json,serialization,.net-4.5,C#,Json,Serialization,.net 4.5,我遇到了一点问题,似乎无法集中精力解决这个问题 我有一个接口(和实现的类),其中包含一个映像 Guid uid { get; set; } Image imageData1 { get; set; } string fileName { get; set; } 图像以字节[]的形式存储在数据库中,将其取出不是问题,因为我将其反序列化为动态对象,然后使用我编写的转换函数将字节[]转换为图像来填充所需的对象 问题是另一个方向 string tmpJson = JsonCon

我遇到了一点问题,似乎无法集中精力解决这个问题

我有一个接口(和实现的类),其中包含一个映像

    Guid uid { get; set; }
    Image imageData1 { get; set; }
    string fileName { get; set; }
图像以字节[]的形式存储在数据库中,将其取出不是问题,因为我将其反序列化为动态对象,然后使用我编写的转换函数将字节[]转换为图像来填充所需的对象

问题是另一个方向

string tmpJson = JsonConvert.SerializeObject( IclassOjbect );
此函数用于序列化映像的类名。但不是将图像数据作为字节数组

我可以获取图像数据并将其转换为序列化之外的字节[],但不知道如何在不进行任何危险的字符串操作的情况下将其插入tmpJSON中以代替“图像类名”


有人对此有什么想法吗?

刚刚在谷歌上找到了这个,所以我想我可能会添加一个答案,即使在这么长时间之后:

[JsonIgnore]
public Image Image { get; set; } = null;

public byte[] ImageAsByte
{
    get
    {
        if (this.Image != null)
        {
            using (var ms = new MemoryStream())
            {
                this.Image.Save(ms, this.Image.RawFormat);
                return ms.ToArray();
            }
        }

        return null;
    }

    set
    {
        if (value != null)
        {
            using (var ms = new MemoryStream(value))
            {
                this.Image = Image.FromStream(ms);
            }
        }
    }
}

你能在你的对象中再添加一个byte[]字段并从序列化中排除([JsonIgnore])图像吗?这是一个选项,但不是一个诱人的选项,一旦序列化,我使用EF保存到数据库中,这种更改将显著下降。然后,我认为定制JsonConverter是一个不错的选择。范例-