【问题标题】:Json.NET - How to serialize a class using custom resolverJson.NET - 如何使用自定义解析器序列化类
【发布时间】:2010-02-23 01:33:10
【问题描述】:

我要序列化这个类:

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

请注意,每个 Car 都有一个仅包含 url 字符串的图片数组,而不是 Picture 类具有的所有属性。

我知道Json.NET 有自定义解析器的概念,但我不确定如何使用它。

【问题讨论】:

    标签: .net json json.net


    【解决方案1】:
    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; }
    }
    

    【讨论】:

      【解决方案2】:

      创建一个将 PictureDisplay 对象作为字符串写入的 JsonConverter。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多