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;

    }

  • 相关阅读:
    Windows 之 手机访问 PC 端本地部署的站点
    Java 之 Given final block not properly padded
    关于ie7下display:inline-block;不支持的解决方案
    Oracle 之 获取当前日期及日期格式化
    WebService 之 实例学习一
    第 3 章 共享程序集和强命名程序集
    第 2 章 生成、打包、部署和管理应用程序及类型
    第一章 CLR的执行模型
    CLR 之 内容概述
    网站跨站点脚本,Sql注入等攻击的处理
  • 原文地址:https://www.cnblogs.com/ywqbj/p/5667599.html
Copyright © 2011-2022 走看看