开发者

Json.NET - How to serialize a class using custom resolver

开发者 https://www.devze.com 2022-12-21 10:12 出处:网络
I want to serialize this class: public class CarDisplay { public string Name { get; set; } public string Brand { get; set; }

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 Reso开发者_JAVA技巧lver, 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; }
}


Create a JsonConverter which writes a PictureDisplay object as a string.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号