有一个客户端使用protobuf序列化一些值。这个客户端是用python编程的。我使用套接字将序列化结果发送到java代码:
serializedRow = t_event.SerializeToString()
sock.send(serializedRow)
在java代码中,消息以字符串形式接收,但在“parsefrom”函数的步骤中,出现了一些不明确的错误。由于parsefrom的参数是bytes,因此在传递字符串之前,它将转换为bytes。
byte[] bytes = row.getBytes();
TaxiEvent taxiEvent1 = TaxiEvent.ParseFrom(bytes);
int sec = taxiEvent1.getTripTimeInSecs();
java代码是在ApacheFlink的上下文中运行的,因此错误消息很长而且不清楚。但是当我省略parsefrom行时,不会发生错误,而且很明显,省略这一行后,接收到的数据就不能使用了。
protobuf的版本是3.5.0。
1条答案
按热度按时间xwbd5t1u1#
解决方案是在中序列化/反序列化
JSON
使用Json.Printer
以及Json.Parser
课程由提供protobuf-java-util
.java实现
添加此依赖项:
代码示例: