ProtoBuf 学习

我的疑惑 :
它既然类似于json通讯协议,那么是如何通讯的?(比如我操作json的话,可以解析json中字段所对应的值;那protobuf是怎么操作的呢?我如何解析,感觉它最多像个bean)

ProtoBuf 学习_第1张图片
Paste_Image.png

参考资料链接
as 中配置
http://www.cnblogs.com/angrycode/p/6238058.html (这一篇算是入门了)
http://www.jianshu.com/p/e8712962f0e9
https://github.com/google/protobuf-gradle-plugin
http://www.jianshu.com/p/c95cc11ef001
http://www.jianshu.com/p/6c9f90538efe
http://www.jianshu.com/p/47cd56f5e915
http://www.jianshu.com/p/c95cc11ef001
http://www.jianshu.com/p/e8712962f0e9

很简单的解析,我的实体类叫做API,解析就一句话 API api = API.parseFrom(byte[] data)

http://blog.csdn.net/carterjin/article/details/8078551 手机端实现Protocol Buffer

书写 .proto 文件内容。
**option java_package = "com.carter.roster.proto";
option java_outer_classname = "Roster";

**
message Student{
required int32 id = 1;
required string name = 2;

enum Sex{  
    MALE = 0;  
    FEMALE = 1;  
}  
  
required Sex sex = 3;  

}

message StudentRoster{
repeated Student student = 1;
}

头两行(不算注释)定义了要编译成Java文件后的包名和类名,proto编译器会自动按照给定的名称生成路径和文件,例如当编译后会有“com.carter.roster.proto.Roster.java”。

// 读取
StudentRoster roster = StudentRoster.parseFrom(fis);
int student_count = roster.getStudentCount();

// 写入
/**
* Save a student info using Protocol Buffer by the given infomation.
* @param id student's id
* @param name student's name
* @param sex student's sex-type.MALE/FEMALE
*/
public static void saveStudentIntoFile(int id, String name, String sex){
FileOutputStream fos = null;

    StudentRoster.Builder roster = StudentRoster.newBuilder();  
    Student.Builder student = Student.newBuilder();  
    student.setId(id);  
    student.setName(name);  关于 .proto 文件的编写方法,Protocol Buffers API等更多内容,可以参考 [Protobuf开发者指南](http://www.jianshu.com/p/3ab14a2cb477)、[在Java中使用Protocol Buffers](http://www.jianshu.com/p/1bf426a9f8f4)及其它相关官方文档。

你可能感兴趣的:(ProtoBuf 学习)