我有一个对象,该对象具有多个公共属性,其中一个属性的类型为image。我尝试使用www.example.com对其进行序列化json.net,并假设我需要对其进行base64编码并序列化生成的字符串。我已尝试使用BinaryConverter对以下属性进行处理,但未成功
public class Person
{
public string name { get; set; }
public int age { get; set; }
[JsonConverter(typeof(BinaryConverter))]
public Image photo { get; set; }
public string ToJson()
{
return JsonConvert.SerializeObject(this);
}
}
使用此测试代码调用时...
var p = new Person();
p.name = "John Doe";
p.age = 99;
p.photo = Image.FromFile(@"dea4007a-c812-41e9-b09a-c7793c6e853d.jpg");
var json = p.ToJson();
Console.WriteLine(json);
Console.ReadKey();
我得到一个异常“写二进制时意外的值类型”。任何帮助都会非常有帮助,因为我已经在网上搜索了一段时间,现在没有成功。
3条答案
按热度按时间eqoofvh91#
Json.NET不知道什么是
Image
,所以你必须帮助它,例如使用一个转换器(BinaryConverter
不适用于图像):然后,它将很好地序列化和反序列化您的类。
5f0d552i2#
在这种情况下,我建议将图像转换为base64,然后将其序列化,下面是一个如何在C#中执行此操作的示例:Convert Image to Base64
ltskdhd13#
按如下所示构造JSONConverter类:
然后使用
JsonConverterAttribute
指定在序列化和反序列化属性时应使用JsonConverter。