.net - Json.NET - 如何使用自定义解析器序列化类

标签 .net 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; }
}

对于这个 Json 测试:

{ 名称:“名称值”, 品牌:“品牌值(value)”, 年份:“年份值”, 图片:[“url1”,“url2”,“url3”] }

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

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

最佳答案

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

关于.net - Json.NET - 如何使用自定义解析器序列化类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315570/

相关文章:

c# - 为什么 IntPtr.ToString() 返回内存地址而不是字符串?

c# - 阻止访问构造函数/仅特定类可以访问

css - 没有 Ruby 的 SASS for .NET 应用程序

javascript - 使用 getJSON 从服务器调用带有变音符号的 JSON 文本文件

objective-c - 将 .NET JSON 日期转换为 NSDate (Swift)

c# - 使用JSON(UWP,C#)获取YouTube统计信息

c# - 使用具有两种相同但名称不同的类型的 API。我怎样才能重用我的代码?

javascript - 在 Node.js 套接字中写入和 'data' 事件

javascript - 在 Javascript 中设置函数的最佳方式(可能通过闭包?)

vb.net - 从 JSON 请求字符串中删除空数组/列表