2010-02-23 112 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圖片類擁有的性能。

我知道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

創建一個將PictureDisplay對象作爲字符串寫入的JsonConverter。

+0

你能解釋一下嗎? – 2010-02-25 03:19:01