Я хочу сериализировать этот класс:
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"]}
Обратите внимание, что каждый Автомобиль имеет массив изображений только со строкой URL вместо всех свойств, которые имеет класс Изображения.
Я знаю, что Json.NET имеет понятие Пользовательского Сопоставителя, но я не делаю уверенный точно, как использовать его.
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; }
}
Создайте JsonConverter, который записывает объект PictureDisplay в виде строки.