zoukankan      html  css  js  c++  java
  • protoful进行序列化

    Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

    一、开发前的准备

    下载protoful :https://github.com/google/protobuf/releases,下载需要的版本

    二、创建.proto文件

    option java_package = "io.netty.example.codec"
    option java_outer_classname = "PersonProtobuf"
    
    
    message Person {
    
       required string name = 1;
       required int32 id =2;
       option 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;
        }
    
    }

    三、使用protoc.exe生成java类

    解压该下载的protoc-2.6.0-win32.zip,得到protoc.exe,把文件msg.proto拷贝到当前目录执行

    protoc.exe --java_out=./ msg.proto

    在目录下就会产生java类

    四、protobuf的语法

    proto文件中的数据类型可以分为两大类:复合数据类型标准数据类型复合数据类型包括枚举message类型;标准数据类型包含:整形、浮点、字符串等,后面会详细介绍。

    • message

    最常用的数据格式就是message,例如CountryInfo 可以用message表示:

    message CountryInfo {

       required string name = 1;

       required string code = 2;

       optional int32 number = 3;

    }

    Java生成后会是这样的类

    • required

    必须赋值,不能为空,否则该条message会被认为是“uninitialized”。build一个“uninitialized” message会抛出一个RuntimeException异常,解析一条“uninitialized” message会抛出一条IOException异常。除此之外,“required”字段跟“optional”字段并无差别。

    • optional

    字段可以赋值,也可以不赋值。假如没有赋值的话,会被赋上默认值。

    • repeated

    该字段可以重复任意次数,包括0次。重复数据的顺序将会保存在protocol buffer中,将这个字段想象成一个可以自动设置size的数组就可以了

    • Enum

    enum PhoneType{

        MOBILE = 0;

        HOME = 1;

        WORK =2;

    }

  • 相关阅读:
    pytest框架运用
    unitTest学习
    发送邮件
    python 连接远程服务器,修改时间
    Redis基础
    django 知识点扩展
    ACM 题目 1487: [蓝桥杯][算法提高VIP]不同单词个数统计
    Leetcode 面试题 08.01. 三步问题
    Leetocode 198. 打家劫舍
    Leetcode 121. 买卖股票的最佳时机
  • 原文地址:https://www.cnblogs.com/ywqbj/p/5667599.html
Copyright © 2011-2022 走看看