如何从协议缓冲区获取byte []用于写入数据库的序列化数据?

时间:2011-03-04 12:17:58

标签: java serialization protocol-buffers

我正在尝试使用协议缓冲区将数据库中的序列化数据存储在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();  

如何从此处获取序列化数据以写入数据库?

1 个答案:

答案 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()的实例。