2010-02-23 7 views
5

Я хочу сериализации этого класса: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-адрес, а не все p которые имеют класс Picture.

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

ответ

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

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

+0

Можете ли вы объяснить, больше? –

Смежные вопросы