• 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;

    }

  • 相关阅读:
    20155313 2016-2017-2《Java程序设计》课程总结
    java第四次实验
    java第五次实验
    20155313 实验三《Java面向对象程序设计》实验报告
    20155313 2016-2017-2 《Java程序设计》第十周学习总结
    20155311《Java程序设计》实验五(网络编程与安全)实验报告
    学号20155311 2016-2017-2《Java程序设计》课程总结
    20155311高梓云补交的Mypc课下实践
    20155311 《Java程序设计》实验四 (Android程序设计)实验报告
    20155311 实验三 敏捷开发与XP实践 实验报告
  • 原文地址:https://www.cnblogs.com/ywqbj/p/5667599.html
Copyright © 2020-2023  润新知