1. 序
Protocol Buffers(簡(jiǎn)稱(chēng)protobuf)是谷歌的一項(xiàng)技術(shù)冒滩,主要用于數(shù)據(jù)的序列化、反序列化肃晚,常用于網(wǎng)絡(luò)傳輸秽荤。
2. 定義proto文件
定義一個(gè)學(xué)生類(lèi),如下所示:
package com.demo.proto
option java_package = "com.demo"
option java_outer_classname = "student"
message student {
required int32 stuid = 1;
required string stuname = 2;
repeated string score = 3;
}
[注]
(1) java_package:該文件生成的java文件的包路徑黄鳍;
(2) java_outer_classname:生成的class的名稱(chēng)推姻;
(3) message是proto文件的基本類(lèi)型,類(lèi)似于java的class框沟;
(4) required表名該字段是必須的藏古,repeated表名該字段可重復(fù),類(lèi)似于java中的List忍燥;
(5) 每個(gè)聲明后的數(shù)字表示該字段在序列化后的二進(jìn)制數(shù)據(jù)中的布局位置拧晕,同級(jí)的聲明數(shù)字不能重復(fù)。
3. 轉(zhuǎn)化為java文件
Google提供了一個(gè)類(lèi)似腳本的工具梅垄,將所寫(xiě)的proto文件復(fù)制到該文件下:
命令行鍵入:
protoc.exe --java_out=./student.proto
會(huì)生成student.java文件:
4. 福利操作
由于在第3步中厂捞,給出的工具腳本在CSDN上已經(jīng)有點(diǎn)expensive...現(xiàn)提供一個(gè)福利操作《铀浚可以下載Google在GitHub中的protobuf工具靡馁,根據(jù)系統(tǒng)選擇不同類(lèi)型的文件。
解壓后得到
為以后運(yùn)行命令方便炭玫,可將bin目錄配置到環(huán)境變量中奈嘿。
配置完成后,命令行鍵入:
protoc --version
可得出protoc的版本信息
將原來(lái)的proto文件對(duì)應(yīng)改為:
syntax = "proto2";
package com.demo.proto;
option java_package = "com.demo";
option java_outer_classname = "studentinfo";
message student {
required int32 stuid = 1;
required string stuname = 2;
repeated string score = 3;
}
需加入syntax = "proto2";才可以編譯成功吞加,由于定義的參數(shù)類(lèi)型中有required類(lèi)型裙犹,不能使用proto3,具體proto2及proto3的區(qū)別可見(jiàn)文章衔憨。
命令行鍵入:
protoc --java_out=./ student.proto
可得出相應(yīng)的java文件: