【发布时间】:2018-10-30 11:24:58
【问题描述】:
我正在写一个 rpc 框架,但是遇到了关于序列化的问题。
你知道在客户端和服务器之间翻译请求,我应该有一个这样的请求类:
class Request {
// target service class
private Class<?> targetService;
// target service method
private String targetMethod;
// target method param types
private Class<?>[] targetParamTypes;
// the params
private Object[] targetParams;
// getters & setters & contructors
}
但是:
对于
targetParams字段,如果我使用Gson作为序列化工具,如果我将POJOs放入targetParams,它会得到com.google.gson.internal.LinkedTreeMap cannot be cast to the.packages.to.MyClass错误,对于一般问题。对于
int类,Gson 总是将其解析为Double,所以我不能使用targetParamTypes[i].cast(targetParams[i])强制将其强制转换为整数(双精度不能转换为整数),它很烂...
那么有人有解决问题的方法吗?如何使序列化/反序列化步骤快速准确?或者有什么推荐的工具?
我试过了:
- Gson,解决之前的问题
- Kyro,编解码器系统很烂,我不知道如何序列化/反序列化 HashMap...
- protostuff,嗯,它不支持 Java 9+,我的环境是 Java 11,糟透了!
有什么建议吗?
【问题讨论】:
-
不就是实现Serializable类那么简单吗?
标签: java json serialization protocol-buffers rpc