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"]}

Обратите внимание, что каждый Автомобиль имеет массив изображений только со строкой URL вместо всех свойств, которые имеет класс Изображения.

Я знаю, что Json.NET имеет понятие Пользовательского Сопоставителя, но я не делаю уверенный точно, как использовать его.

5
задан Fitzchak Yitzchaki 23 February 2010 в 02:11
поделиться

2 ответа

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; }
}
10
ответ дан 13 December 2019 в 22:06
поделиться

Создайте JsonConverter, который записывает объект PictureDisplay в виде строки.

0
ответ дан 13 December 2019 в 22:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: