2010-02-23 30 views
5

Tôi muốn serialize lớp này:Json.NET - Làm thế nào để serialize một lớp sử dụng tùy chỉnh phân giải

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

Để kiểm tra Json này:

{ Tên: "Tên giá trị", Nhãn hiệu: "giá trị thương hiệu", Năm: "Năm giá trị", Hình: [ "url1", "url2", "URL3"] }

Lưu ý rằng mỗi xe có một mảng ảnh với những chuỗi url, thay vì tất cả các p roperties rằng lớp hình ảnh có.

Tôi biết rằng Json.NET có khái niệm về Trình giải quyết tùy chỉnh, nhưng tôi không chắc chắn chính xác cách sử dụng nó.

Trả lời

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

Trong lớp màn hình xe của bạn:

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

Tạo JsonConverter viết đối tượng PictureDisplay dưới dạng chuỗi.

+0

Bạn có thể giải thích thêm? –

Các vấn đề liên quan