java - 如何确定 thrift 消息的类型?
问题描述
我有一个管道有两种节俭消息进来
我可以尝试单独反序列化每个,看看它是否遇到错误
TDeserializer deserializer = new TDeserializer(new TSimpleJSONProtocol.Factory());
try {
Type1Msg t1 = new Type1Msg();
deserializer.deserialize(t1, json, "UTF-8");
return t1
} catch() {
}
try {
Type2Msg t2 = new Type2Msg();
deserializer.deserialize(t1, json, "UTF-8");
return t2
} catch() {
}
是否有一种惯用的方法可以在 Thrift 中实现反序列化多种消息类型?
解决方案
我已经在这里为 Python 回答了这个问题,但实际上这个话题与语言无关。
使用 Thrift union
,或者struct
带有非必填字段的 a 也可以:
union varying {
1 : Type1Msg msg1
2 : Type2Msg msg2
// room for more
}
进一步阅读:
推荐阅读
- php - SSL强制通过.htaccess导致wordpress上的重定向循环
- c++ - sclite (SCTK)、C++ 模板参数、Filter::Filter* 无效。赛格温
- bash - Git:应用新文件的差异
- applescript - 如何使用苹果脚本同时打开多个查找器窗口?
- node.js - 如何将队列使用的消息发送到快速应用程序?
- c++ - 获取具有特定距离的键值对数组中的第二个最大数
- azure-data-factory-2 - 使用 Azure 数据工厂中的存储过程转换数据
- python - 如何使用 PIL 将 1 通道图像转换为 3 通道?
- python - 当表格是 JSON 对象时,如何使用 BeautifulSoup 导入 CSS 表格?
- facebook - 有没有办法将可以使用 Messenger 机器人的国家列入白名单?