本文介绍了Json.NET - 如何使用自定义解析序列化的类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想序列化这个类:
公共类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; }
}
这篇关于Json.NET - 如何使用自定义解析序列化的类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!