从List <t>派生的类型的JSON.NET序列化

时间:2018-02-16 06:48:15

标签: c# .net json serialization json.net

我们将缓存系统从二进制序列化程序(AppFabric使用的一个)切换到JSON序列化程序(与Redis一起使用),并且我遇到了一些与一些对象类型不兼容的问题。一般的想法是一样的,我们有一个看起来像这样的类:

try {
    response = getRestTemplate().exchange...
} catch (HttpClientErrorException e) {
    if (e.getStatusCode().equals(HttpStatus.UNAUTHORIZED))
        //code to refresh the token or throw custom exception...
}catch (Exception e) {
    //
}

二进制序列化器会很好地序列化和反序列化对象。但是,当我尝试使用JSON.NET序列化对象时,我得到:

[Serializable]
public class ActivityMeasurementIndexes : List<ActivityMeasurementIndex>
{
    public int Id { get; set; }

    public DateTime lastDbRead { get; set; }

    public ActivityMeasurementIndexes()
    {
        lastDbRead = DateTime.Now;
    }
}

因此,JSON.NET基本上是序列化基类var testObject = new ActivityMeasurementIndexes { Id = 5 }; Newtonsoft.Json.JsonConvert.SerializeObject(testObject); "[]" ,但派生类型中的属性正在丢失。我可以重构这个类,所以它有一个List<T>,但是我们有很多这样的类和大量的代码也需要重构。

有一个很好的方法来处理这个问题吗?只要我可以序列化和反序列化基本列表以及类的属性,我就不会非常关心 JSON的外观。我猜我需要编写某种自定义转换器,或者JSON.NET可以开箱即用来帮助我。对于阅读内容的任何提示都会很棒!

0 个答案:

没有答案