我想序列化这个类:
公共类CarDisplay
{
公共字符串名称{;组; }
公共字符串品牌{获得;组; }
公共字符串年度{获得;组; }
公共PictureDisplay [] {图片搞定;组; }
}
公共类PictureDisplay
{
公众诠释编号{获得;组; }
公共字符串SecretKey的{获得;组; }
公共字符串AltText {获得;组; }
}
要此JSON测试:
{ 产品名称:名称值, 品牌:品牌价值, 年份:年值, 图片:为url1,URL2,URL3] }
请注意所有的图片类具有的属性,每车有一个图片数组只有URL字符串代替。
我知道, Json.NET 定制解析器的概念,但我不知道究竟如何使用它。
解决方案 公共类PictureDisplayConverter:JsonConverter
{
公众覆盖无效WriteJson(JsonWriter作家,对象的值,JsonSerializer串行)
{
//转换图片的数组JSON字符串;
}
公众覆盖对象ReadJson(JsonReader读者,类型的objectType,JsonSerializer串行)
{
//转换回JSON字符串转换成图像阵列
}
公众覆盖布尔CanConvert(类型的objectType)
{
返回true;
}
}
在你的车显示类:
公共类CarDisplay
{
公共字符串名称{;组; }
公共字符串品牌{获得;组; }
公共字符串年度{获得;组; }
[JsonConverter(typeof运算(PictureDisplayConverter))]
公共PictureDisplay [] {图片搞定;组; }
}
I want to serialize this class:
public class CarDisplay
{
public string Name { get; set; }
public string Brand { get; set; }
public string Year { get; set; }
public PictureDisplay[] Pictures { get; set; }
}
public class PictureDisplay
{
public int Id { get; set; }
public string SecretKey { get; set; }
public string AltText { get; set; }
}
To this Json test:
{ Name: "Name value", Brand: "Brand value", Year: "Year value", Pictures: ["url1", "url2", "url3"] }
Note that each Car have an pictures array with only url string, instead of all the properties that Picture class have.
I know that Json.NET have the notion of Custom Resolver, but I don't sure exactly how to use it.
解决方案public class PictureDisplayConverter : JsonConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
// convert array of picture to json string;
}
public override object ReadJson(JsonReader reader, Type objectType, JsonSerializer serializer)
{
// convert back json string into array of picture
}
public override bool CanConvert(Type objectType)
{
return true;
}
}
In your car display class:
public class CarDisplay
{
public string Name { get; set; }
public string Brand { get; set; }
public string Year { get; set; }
[JsonConverter(typeof(PictureDisplayConverter ))]
public PictureDisplay[] Pictures { get; set; }
}
上一篇:RegularEx pressionValidator.ValidationEx pression强制长度在10或12个符号符号、长度、ValidationEx、RegularEx
下一篇:我怎样才能检索项目的一个ItemsControl中的DataTemplate(与特定的对象)?对象、项目、ItemsControl、DataTemplate