ProtoBuf语法version3

ProtoBuf语法version3

syntax = "proto3"; //语法版本
package com.njit.cn; //生成的java类所在包名
option java_outer_classname ="MyPerson";//生成的类名称
message Person {  //pojo
  int32 id = 1; //int变量
  string name = 2;//字符串变量
  repeated string emails = 3;//emails list集合
}  
-I:.proto文件所在的目录  --java_out:遍历后的java文件目录地址  person.proto 文件名称
protoc -I=C:\\Users\xiaodongchen\Desktop --java_out=C:\\Users\xiaodongchen\Desktop person.proto

示例代码

proto文件

syntax = "proto3";//语法版本
package protobuf;//生成的java类所在包名
option java_outer_classname ="MyPerson";//生成的类名称
message Person {  //pojo
  int32 id = 1; //int变量
  string name = 2;//字符串变量
  repeated string emails = 3;//emails list集合
}  

java文件生成命令:

protoc -I=C:\\Users\xiaodongchen\Desktop --java_out=C:\\Users\xiaodongchen\Desktop person.proto

将生成后的文件拷贝到java项目中,为protobuf添加依赖包:在pom.xml中添加

<dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.17.3</version>
        </dependency>
    </dependencies>

主程序:

public class Application {
    public static void main(String[] args) throws InvalidProtocolBufferException {
        // 获得person的建造者
        MyPerson.Person.Builder builder = MyPerson.Person.newBuilder();
        // int 类型
        builder.setId(2020190608);
        // 字符串类型
        builder.setName("chenxiaodong");
        // 集合类型, 使用add方法添加数据
        builder.addEmails("27743983381@qq.com");
        builder.addEmails("27743983382@qq.com");
        builder.addEmails("27743983383@qq.com");
        // 建造Person实例
        MyPerson.Person person = builder.build();
        // 对person进行序列化
        byte[] data = person.toByteArray();
        System.out.println("data 字节数:"+data.length);
        // 对字节数组进行反序列化
        MyPerson.Person myPerson = MyPerson.Person.parseFrom(data);
        System.out.println(myPerson);
    }
}

运行结果:

data 字节数:80
id: 2020190608
name: "chenxiaodong"
emails: "27743983381@qq.com"
emails: "27743983382@qq.com"
emails: "27743983383@qq.com"


Process finished with exit code 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值