Java中使用Protobuf

Posted areful

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中使用Protobuf相关的知识,希望对你有一定的参考价值。

gradle依赖库:

implementation \'com.google.protobuf:protobuf-java:3.4.0\'
implementation \'com.google.protobuf:protobuf-java-util:3.4.0\'

  

0.编写.proto文件,编译生成对应Java源文件:

syntax = "proto2";
option java_generic_services = true;
option java_package = "gj.protobuf.sample";
option java_outer_classname = "ProtoSample";

message Student {
    required int32 id = 1;
    optional string name = 2;
}

  

protoc --java_out=..\\..\\java ProtobufSample.proto

1.编写Java文件:

package gj.protobuf.sample;

import com.google.protobuf.InvalidProtocolBufferException;

/**
 * Author: areful
 */
public class ProtoSampleTest {
    public static void main(String[] args) {
        ProtoSample.Student student = ProtoSample.Student.newBuilder()
                .setId(1)
                .setName("areful")
                .build();
        System.out.println(student);

        byte[] data = student.toByteArray();
        try {
            ProtoSample.Student student1 = ProtoSample.Student.parseFrom(data);
            System.out.println(student1);
        } catch (InvalidProtocolBufferException e) {
            e.printStackTrace();
        }
    }
}

    

2.编译运行:

 

以上是关于Java中使用Protobuf的主要内容,如果未能解决你的问题,请参考以下文章

在 Java 中读取 protobuf 消息时出现异常

Java中使用Protobuf

案例篇:利用ProtoBuf文件,一键生成Java代码

idea使用Protobuf插件

如何为 gRPC 生成的 Java 代码实现 com.google.protobuf.BlockingRpcChannel?

在java程序中使用protobuf