Json.NET - How to serialize a class using custom resolver
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.
精彩评论