我们将缓存系统从二进制序列化程序(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可以开箱即用来帮助我。对于阅读内容的任何提示都会很棒!