一. 描述对象的proto文件

  1. 第一行package:对象经过protobuffer编译后形成java文件,这个文件放在按照package新建的文件夹内
  2. java_package:java类的包名
  3. java_outer_classname:java文件名,也是public class的名字
  4. message定义内部类Person,Person也是要序列化的类
  5. required表示该字段是必须字段,optional是可选字段
  6. repeated根据不同的消息类型解析数据包内的字段,用于自定义的类,数组等
    package  com.lj;
    option java_package="com.lj";
    option java_outer_classname="MyPerson"; message Person{
    required string name=1;
    required int32 id=2;
    optional string email=3; message PhoneNumber{
    required string number=1;
    optional int32 type=2;
    } repeated PhoneNumber phoneNumber=4;
    }

二. 编译描述文件

protoc --proto_path=IMPORT_PATH --java_out=DST_DIR file.proto

三. 序列化与反序列化代码

  1. new Builder().build()方法创建序列化
  2. parseFrom()反序列化
    public class TestProtocalBuffer {
    /**
    * protobuffer序列化 : 1.编写proto文件描述bean 2.命令生成代码 3.java代码调用
    * @param args
    * @throws IOException
    */
    public static void main(String[] args) throws IOException { MyPerson.Person p1 = MyPerson.Person.newBuilder()
    .setName("lj").setId(25629).setEmail("lj72808up@163.com")
    .addPhoneNumber(MyPerson.Person.PhoneNumber.newBuilder().setNumber("13905723516").setType(1)).build(); FileOutputStream os = new FileOutputStream("d://123.txt");
    p1.writeTo(os); // 把文件
    os.close(); } /**
    * protobuffer读取文件反序列化成对象
    * @throws IOException
    */
    @Test
    public void testRead() throws IOException {
    FileInputStream is = new FileInputStream("d://123.txt");
    MyPerson.Person person = MyPerson.Person.parseFrom(is);
    System.out.println(person);
    }
    /** name: "lj"
    id: 25629
    email: "lj72808up@163.com"
    phoneNumber {
    number: "13905723516"
    type: 1
    } **/
    }

最新文章

  1. Jquery初学
  2. WPF 中的image控件的Source如何赋值
  3. 轻松掌握:JavaScript代理模式、中介者模式
  4. angular 依赖注入原理
  5. &和&&
  6. (48) odoo的button用法
  7. 第一篇英文短文《It All Starts With A Dream》
  8. 2013 Multi-University Training Contest 6
  9. 节点属性(DOM对象)
  10. lihgtoj 1006
  11. php 数组Array 删除指定键名值
  12. 七、Spring Boot Servlet 使用
  13. java游戏开发杂谈 - 游戏物体
  14. TK2 USB修复
  15. List Leaves
  16. O365 Manager Plus帮助台委派功能一览表
  17. Redis的数据结构之哈希
  18. Tsung 超详细的的tsung性能测试资料
  19. Django 自定义过滤器和模板标签
  20. jmeter bean shell断言加密的响应信息(加密接口测试二)

热门文章

  1. python3获取当前目录(转)
  2. 1-3 ISO/OSI七层模型详解
  3. phpwind8.7升级9.0.1过程(四)20130207升级到20141228
  4. Android——不同activity之间数据传递
  5. IAR MSP430如何生成烧写文件
  6. 两篇很牛的vim使用技巧
  7. The differences between Java EE components and "standard" Java classes
  8. 在Windows7上安装coreseek3.2同时在PHP下简单实现步骤
  9. dl,dt,dd,ul,li,ol区别
  10. SVG添加链接(转载)