• 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
    *******************************
    工程文件结构:


     

  • 相关阅读:
    ASP.NET安全问题-- 创建安全的Web应用程序
    浅谈ASP.NET内部机制(八)
    ASP.NET 配置文件纵横谈(一)
    项目开发-让设计模式成为一种心智
    浅谈ASP.NET内部机制(七)
    ASP.NET 配置文件纵横谈(二)
    GridView的分页是否真的是鸡肋呢?
    SQL开发中容易忽视的一些小地方(四)
    SQL开发中容易忽视的一些小地方( 三)
    怎样才能充分利用SQL索引
  • 原文地址:https://www.cnblogs.com/dongweiq/p/3993439.html
Copyright © 2020-2023  润新知