0
点赞
收藏
分享

微信扫一扫

谷歌pb协议

1、proto文件

package com.test.pro.MavenProject;//命名空间


option java_package = "com.test.pro.MavenProject";//生成文件的包名

option java_outer_classname = "AddressBookProtos";//类名


message Person { //要描述的结构化数据


required string name = 1;//required表示这个字段不能为空

required int32 id = 2;//等号后面的内容为数字别名

optional string email = 3;//optional表示可以为空

}


message AddressBook {

repeated Person person = 1;//是个集合

}



2、jar文件



3、编译命令

F:\>protoc --java_out=F:\ my.proto

其中protoc.exe在F盘。proto文件也在F盘。编译成功后,把生成的.java文件拷贝到工程目录中

4、java代码

package com.test.pro.MavenProject;


import com.test.pro.MavenProject.AddressBookProtos.Person;


/**

* Hello world!

*

*/

public class App

{

public static void main( String[] args )

{

Person.Builder chinese=Person.newBuilder();

chinese.setName("jianghuiwen");

chinese.setId(1);

chinese.setEmail("15255123122@163.com");


Person myperson=chinese.build();

}

}


4、序列化对象

package com.test.pro.MavenProject;


import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;


import com.test.pro.MavenProject.AddressBookProtos.Person;


/**

* Hello world!

*

*/

public class App

{

public static void main( String[] args ) throws Exception

{

Person.Builder chinese=Person.newBuilder();

chinese.setName("jianghuiwen");

chinese.setId(1);

chinese.setEmail("15255123122@163.com");


Person myperson=chinese.build();


//写入序列化

FileOutputStream fos = new FileOutputStream("person.out");

myperson.writeTo(fos);

fos.close();


//读出对象

FileInputStream fin=new FileInputStream("person.out");

Person newP=Person.parseFrom(fin);

System.out.println(newP.getName());

}

}


上述代码就是将我们生成的pb对象写入到流中,同时从流中获取对象。

举报

相关推荐

0 条评论