如何将.proto通过命令转换成.java文件
首先上github下安装压缩包:https://github.com/google/protobuf/releases
下载:protoc-3.11.4-win64.zip压缩包
样例地址:https://blog.csdn.net/qq_33546747/article/details/53256891
1、先从网上下载protobuf的压缩包
2、解压缩包到protobuf-tool文件,得到一个include文件夹和一个bin文件夹,bin里面包含protoc.exe
3、将.proto文件放在文件夹bin下面和protoc.exe同一级别
4、打开命令行windows+r 输入cmd
5、切换文件所在的盘 F:
6、切换到protoc.exe所在的文件夹 cd F:\protobuf\protobuf-tool\bin
7、执行.proto文件 protoc.exe --java_out=./ rticinfo.proto
8、生成的.java文件生成在bin文件夹下的rticinfo.proto文件头中设置位置,如下:
rticinfo.proto文件头中指定
// 如果使用此注释,则使用proto3; 否则使用proto2
syntax = "proto3";
// 生成类的包名
option java_package = "com.autoai.ms.tmc.grab.worker.bean";
// 生成的数据访问类的类名,如果没有指定此值,则生成的类名为proto文件名的驼峰命名方法
option java_outer_classname = "CityInfoPB";
依赖
<dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java-util</artifactId> <version>3.8.0</version> </dependency>
pb文件byte[] 转 pb的java对象
// 从地址中获取数据 byte[] zipByte = getUrlRespPb(url); // 路况pb文件进行解压 byte[] bytePb = ZipUtil.uncompressByte(zipByte); // pb文件转成对象 CityInfoPB.CityInfo cityInfo = CityInfoPB.CityInfo.parseFrom(bytePb);
pb的java对象 转 jsonString
// 将pb的java对象转成String类型的json String jsonString = JsonFormat.printer().includingDefaultValueFields().print(cityInfo);
jsonString 转 pb的java对象
String jsonString= "XXXX"; // 创建pb对象 CityInfoPB.CityInfo.Builder builder = CityInfoPB.CityInfo.newBuilder(); // 将jsonString转成pb对象 JsonFormat.parser().merge(jsonString, builder);