protobuf3 自定义option_Protobuf3 系列二 定义复杂的proto文件

本文介绍了如何在protobuf3中定义复杂的对象,包括List列表、枚举成员、Any对象和Map对象,并展示了如何使用reserved关键字进行扩展。同时,通过示例演示了如何生成Java类并进行序列化与反序列化操作。
摘要由CSDN通过智能技术生成

定义复杂的对象

这是Protobuf3的系列二: 如何在protobuf中定义更复杂的对象

proto文件

除了定义string, int等基础对象外(protobuf的基础数据结构和Java变量的对应关系见文章末尾),还可以在proto中定义更复杂的对象,详细如下:

定义List列表:值可以是普通变量,也可以复杂对象

message ComplexObject {

repeated string sons = 4; // List列表

repeated Result result = 6; // 复杂的对象List

}

// 定义一个新的对象

message Result {

string url = 1;

string title = 2;

repeated string snippets = 3;

}1

2

3

4

5

6

7

8

9

101

2

3

4

5

6

7

8

9

10

定义枚举成员

message ComplexObject {

...

Gender gender = 5; // Enum值

...

}

enum Gender {

MAN = 0;

WOMAN = 1;

}1

2

3

4

5

6

7

8

91

2

3

4

5

6

7

8

9

定义Any对象:用于定义任意的值

message ComplexObject {

repeated google.protobuf.Any any = 7; // Any对象

}1

2

31

2

3

定义Map对象:key,value都可以是复杂对象

message ComplexObject {

map map = 8; // 定义Map对象

}

// 定义Map的value值

message MapVaule {

string mapValue = 1;

}1

2

3

4

5

6

71

2

3

4

5

6

7

通过 reserved保留 Assigning Tags和filed name用于将来扩展用

message ComplexObject {

reserved 12, 15, 9 to 11; // 预留将来使用的Assigning Tags,

reserved "foo", "bar"; // 预留将来使用的filed name

}1

2

3

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值