`

ProtoBuf 的java使用

 
阅读更多

碰巧用到Proto,算是笔记吧

windows :

1,两个文件:proto.exe,  protobuf-java-2.4.1.jar

2,建立一个工程TestPb,在下面建立一个proto文件件,用来存放【。proto】文件
3,将proto,exe放在工程下,

4,建立一个msg.proto文件:

option java_package = "com.protobuftest.protobuf";
option java_outer_classname = "PersonProbuf";
 
message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;
 
  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }
 
  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }
 
  repeated PhoneNumber phone = 4;
 
  message CountryInfo {
          required string name = 1;
          required string code = 2;
          optional int32 number = 3;
  }
}
 
message AddressBook {
  repeated Person person = 1;
}
5,生成 java文件:在proto.exe目录下:protoc  --java_out=./src   ./proto/msg.proto

 

 

6,copy个测试示例了

新建一个文件TestPb.java
***********************************************************
package com.protobuftest.protobuf;
 
import java.util.List;
 
import com.google.protobuf.InvalidProtocolBufferException;
import com.protobuftest.protobuf.PersonProbuf;
import com.protobuftest.protobuf.PersonProbuf.Person;
import com.protobuftest.protobuf.PersonProbuf.Person.PhoneNumber;
 
public class TestPb {
 
/**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
PersonProbuf.Person.Builder builder = PersonProbuf.Person.newBuilder();
builder.setEmail("kkk@email.com");
builder.setId(1);
builder.setName("TestName");
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("131111111").setType(PersonProbuf.Person.PhoneType.MOBILE));
builder.addPhone(PersonProbuf.Person.PhoneNumber.newBuilder().setNumber("011111").setType(PersonProbuf.Person.PhoneType.HOME));
 
Person person = builder.build();
byte[] buf = person.toByteArray();
 
try {
Person person2 = PersonProbuf.Person.parseFrom(buf);
System.out.println(person2.getName() + ", " + person2.getEmail());
List<PhoneNumber> lstPhones = person2.getPhoneList();
for (PhoneNumber phoneNumber : lstPhones) {
System.out.println(phoneNumber.getNumber());
}
} catch (InvalidProtocolBufferException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
 
System.out.println(buf);
 
}
 
}
***********************************************

*******************************
生成java文件:PersonProbuf.java
*******************************
工程文件结构:


 

 

分享到:
评论

相关推荐

    protobuf java 工程示例

    描述中的“protobuf工程示例,protobuf读写消息示例”意味着这个压缩包包含了一个展示如何在Java项目中使用protobuf进行消息序列化和反序列化的实例。在这个过程中,开发者通常会定义.proto文件,该文件包含了...

    protobuf-java-3.11.4-API文档-中文版.zip

    赠送jar包:protobuf-java-3.11.4.jar; 赠送原API文档:protobuf-java-3.11.4-javadoc.jar; 赠送源代码:protobuf-java-3.11.4-sources.jar; 赠送Maven依赖信息文件:protobuf-java-3.11.4.pom; 包含翻译后的API...

    protobuf-java-3.16.1-API文档-中文版.zip

    赠送jar包:protobuf-java-3.16.1.jar; 赠送原API文档:protobuf-java-3.16.1-javadoc.jar; 赠送源代码:protobuf-java-3.16.1-sources.jar; 赠送Maven依赖信息文件:protobuf-java-3.16.1.pom; 包含翻译后的API...

    protobuf java 3.2.0 zip

    这个ZIP文件包含了在Java环境中使用protobuf所需的所有类库、文档和可能的示例代码。 标签"protobuf java 3.2.0"进一步明确了这是关于protobuf在Java平台上的3.2.0版本,这个标签对于开发者来说是搜索和识别资源的...

    protobuf-java完整包(jar+source+javadoc)

    protobuf-java完整包(jar+source+javadoc+本地编译器),难得资源,直接导入可用! 使用教程: 1. 编辑build.bat,根据build.bat内设置的路径,把.proto文件放到相应的文件夹内,执行build.bat即可把.proto文件编译...

    protobuf-java-2.5.0jar包

    开发者可以使用protobuf编译器(protoc)将.proto文件转换为Java类,这些类提供了序列化和反序列化的API,使得程序能够轻松地处理和解析protobuf格式的数据。 使用protobuf有以下几个关键步骤: 1. 定义数据结构:...

    protobuf java 接口 demo

    标题中的“protobuf java 接口 demo”指的是使用Google的Protocol Buffers(简称protobuf)在Java环境中实现接口的示例。Protocol Buffers是一种高效的数据序列化协议,它允许开发者定义数据结构,然后生成能够轻松...

    protobuf-java-3.7.1-API文档-中文版.zip

    赠送jar包:protobuf-java-3.7.1.jar; 赠送原API文档:protobuf-java-3.7.1-javadoc.jar; 赠送源代码:protobuf-java-3.7.1-sources.jar; 赠送Maven依赖信息文件:protobuf-java-3.7.1.pom; 包含翻译后的API文档...

    protobuf java自动生成,例子实用

    `Java使用Protocol Buffers入门四步骤 -.htm`和`Java使用Protocol Buffers入门四步骤 -_files`可能是一个教程文档和相关资源,详细介绍了如何在Java环境下逐步开始使用protobuf。 protobuf的优点包括小巧高效、兼容...

    protobuf-java-3.4.0.zip

    在Java环境中,protobuf提供了编译器和API,使得开发者可以方便地在应用程序中使用protobuf定义的数据结构。 描述中的"protobuf-java-3.4.0.zip"进一步确认了这是一个针对Java平台的protobuf库的特定版本,即3.4.0...

    protobuf java代码生成

    Java作为广泛使用的编程语言之一,protobuf提供了对Java的良好支持。本篇文章将详细探讨protobuf在Java中的代码生成过程。 首先,我们需要理解protobuf的基本概念。一个`.proto`文件是protobuf的数据结构定义,它...

    protobuf java和c#生成

    在Java和C#中使用protobuf,开发者首先需要编写.proto文件,这是一种定义数据结构的文本文件。.proto文件包含消息类型定义,类似于编程语言中的类。例如: ```protobuf syntax = "proto3"; message Person { ...

    protobuf-java-3.11.4-API文档-中英对照版.zip

    赠送jar包:protobuf-java-3.11.4.jar; 赠送原API文档:protobuf-java-3.11.4-javadoc.jar; 赠送源代码:protobuf-java-3.11.4-sources.jar; 赠送Maven依赖信息文件:protobuf-java-3.11.4.pom; 包含翻译后的API...

    protobuf-java-util-shaded-351-0.9-API文档-中英对照版.zip

    赠送jar包:protobuf-java-util-shaded-351-0.9.jar; 赠送原API文档:protobuf-java-util-shaded-351-0.9-javadoc.jar; 赠送源代码:protobuf-java-util-shaded-351-0.9-sources.jar; 赠送Maven依赖信息文件:...

    protoc.exe和protobuf-java-3.6.1集合

    3. **引入protobuf库**:将protobuf-java-3.6.1.jar添加到Java项目的类路径中,以便在运行时使用protobuf的API。 4. **序列化和反序列化**:在Java代码中,使用生成的Java类实例化消息对象,填充字段,然后通过...

    protobuf-java-3.5.1.jar+protoc.exe哦

    这个版本的jar文件适用于Java 8及以上版本,确保在Java项目中使用protobuf时的兼容性。 `protoc.exe`是protobuf编译器,它能读取.proto文件,并根据文件中的定义生成对应语言的源代码。对于Java项目,protoc会生成...

    protobuf-java-3.5.0 jar包

    包含protobuf-java-3.5.0.jar,protobuf-java-util-3.5.0.jar以及对应的javadoc和sources 还有对应版本所有平台的的protoc。 需要其他版本的请进我CSDN空间查看。包齐全 站内搜出来的都40 50个币 漫天要价。自己折腾...

    protobuf--java-3.2.0.jar & protoc-3.2.0-windows-x86_32.exe

    开发者在Java项目中引入这个jar包,就可以在Java程序中使用protobuf API来编码和解码protobuf消息。 使用步骤: - 定义.proto文件,其中包含protobuf消息类型和字段的定义。 - 使用protoc编译器(即将讨论的工具...

    Protobuf生成java类

    - 在Java项目中,需要添加protobuf-java库作为依赖,以便使用编译器生成的Java类。 - 通过Maven或Gradle,可以很容易地将protobuf-java库引入到构建配置中。 9. **运行时支持**: - 除了编译器生成的代码,...

    GoogleProtobuf Java api(离线版本)

    protobuf Java版本的离线api,自己制作

Global site tag (gtag.js) - Google Analytics