我正在尝试使用协议缓冲区将数据库中的序列化数据存储在java中构建的Web应用程序中。
我创建了.proto文件并编译它们以获取生成的类。我也可以使用setter& amp;来构建消息对象。最后是build()方法。但是要将它存储到数据库,我需要将序列化数据作为byte []或字节缓冲区。我如何最终从消息实例中获取它?
import com.paratha.serializers.protocolbuffers.CommentProto.Comment;
Comment.Builder comment=Comment.newBuilder();
comment.setCommentBody("This is the first comment!").setUserId(32433).build();
如何从此处获取序列化数据以写入数据库?
答案 0 :(得分:6)
Google让它变得非常简单:):
MyProtocolBufferObject myObject = MyProtocolBufferObject.newBuilder().setName("bob").build();
byte[] bytes = myObject.toByteArray();
修改强> 举个例子:
Comment.Builder commentBuilder=Comment.newBuilder();
Comment comment = commentBuilder.setCommentBody("This is the first comment!").setUserId(32433).build();
byte[] bytes = comment.toByteArray();
请注意,当您调用newBuilder()
方法时,您将获得Comment.Builder
的实例,而不是 Comment
的实例。只有当您调用Comment.Builder
的{{1}}方法时,才能获得build()
的实例。