java - 对于 ZonedDateTime 字段,Protostuff 库未按预期工作
问题描述
我正在尝试在我的项目中使用 protostuff 库进行序列化/反序列化。我按照github中提到的 README.md 进行操作。
我遇到了一个问题,即 ZonedDateTime 字段未正确序列化/反序列化。
考虑这个简单的例子
public class SomeClass {
private ZonedDateTime dateTime;
private String message;
public SomeClass(ZonedDateTime dateTime, String message) {
this.dateTime = dateTime;
this.message = message;
}
public static void main(String[] args) {
SomeClass serialized = new SomeClass(ZonedDateTime.now(), "some message");
byte[] bytes = getProtoByteArray(serialized, SomeClass.class);
SomeClass deSerialized = getObjectFromProtoByteArray(bytes, SomeClass.class);
System.out.println(serialized.getDateTime()); // 2021-06-14T23:07:07.100+05:30[Asia/Calcutta]
System.out.println(deSerialized.getDateTime()); // 2021-06-14T23:07:07.100null[Asia/Calcutta]
}
//serialization
public static <T> byte[] getProtoByteArray(T message, Class<T> clazz) {
LinkedBuffer buffer = LinkedBuffer.allocate(512);
Schema<T> schema = RuntimeSchema.getSchema(clazz);
// ser
final byte[] protostuff;
try {
protostuff = ProtobufIOUtil.toByteArray(message, schema, buffer);
} finally {
buffer.clear();
}
return protostuff;
}
//deserialization
public static <T> T getObjectFromProtoByteArray(byte[] data, Class<T> clazz) {
Schema<T> schema = RuntimeSchema.getSchema(clazz);
T parsed = schema.newMessage();
ProtobufIOUtil.mergeFrom(data, parsed, schema);
return parsed;
}
//getters setters
}
正如您在输出中看到的,反序列化对象的偏移量字段为 null
2021-06-14T23:07:07.100null[Asia/Calcutta]
我们是否必须配置一些东西来解决这个问题?或者当前库不支持 ZonedDateTime 类型?
解决方案
推荐阅读
- r - 用另一个数据集中的平均值替换缺失值,按因子
- javascript - 基于内容长度的跨页行
- wpf - 上下文菜单的相对源停止 DataTrigger 工作
- c# - 使用 .Net 客户端 SDK 获取 Azure DevOps 团队
- angular - 由于angular7中的依赖注入而导致角度单元测试失败?
- flutter - 如何分离 Flutter 项目的构建和版本号以实现多种风格
- python - 两个 Django 应用程序如何使用相同的数据库进行身份验证
- javascript - 为什么过滤然后映射会改变javascript中的原始数组
- javascript - undefined:1 undefined ^ SyntaxError: Unexpected token u in JSON at position 0
- python - Django 突然不能再加载静态文件了