2010-02-23 2 views
5

을 사용하여 클래스를 직렬화하는 방법이 JSON 시험에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; } 
} 

을 :

{ 이름 : "이름 값" 브랜드 : "브랜드 가치" 년 "올해의 값" 사진 : [ "URL1", "URL2", "URL3"] }

참고 각 자동차 대신의 URL 문자열과 사진의 배열을 가지고 모든 피 Picture 클래스에있는 로퍼.

나는 Json.NET에 Custom Resolver라는 개념이 있지만 정확한 사용법을 모르겠다.

답변

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

당신은 더 설명 할 수 있습니까? –