Json.NET - 如何使用自定义解析器序列化类

时间:2010-02-23 01:33:11

标签: .net json json.net

我想序列化这个类:

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; }
}

对这个Json测试:

{   名称:“名称值”,   品牌:“品牌价值”,   年份:“年份价值”,   图片:[“url1”,“url2”,“url3”]  }

请注意,每个Car都有一个只包含url字符串的图片数组,而不是Picture类具有的所有属性。

我知道Json.NET有自定义解析器的概念,但我不确定如何使用它。

2 个答案:

答案 0 :(得分:10)

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;
   }
}

在你的车展中:

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; }
}

答案 1 :(得分:0)

创建一个JsonConverter,将PictureDisplay对象写为字符串。