`

python protobuf序列化repeated运用

 
阅读更多

下面是proto描述文件的定义
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 AddressBook {
  repeated Person person = 1;
}
在python中利用google.protobuf序列化数据进行通讯的时候,一定会遇到repeated的数据如何去创建
在这里我给大家分享一下:
import addressbook_pb2
person = addressbook_pb2.Person()
person.id = 1234
person.name = "John Doe"
person.email = "jdoe@example.com"
phone = person.phone.add()
phone.number = "555-4321"
phone.type = addressbook_pb2.Person.HOME
person.no_such_field = 1
person.id = "1234" 
请注意加红的一行代码,这就是重点,如果想再添加一个的话phone2 = person.phone.add()即可,然后给phone2赋值。
分享到:
评论

相关推荐

    python protobuf环境相关软件

    在Python项目中,有时我们需要将Protobuf序列化的数据存入Redis。这里以`redis-py`库为例,介绍如何操作。 1. 安装redis-py库 通过pip安装: ``` pip install redis ``` 2. 存储和检索Protobuf数据 ```python ...

    repeated限定修饰符的使用

    总之,`repeated`限定修饰符在protobuf中扮演着至关重要的角色,它使得protobuf能够支持复杂的数据结构,并且提供了跨平台、高效的序列化和反序列化机制。在实际应用中,根据需求合理使用`repeated`字段,可以极大地...

    Protobuf生成java类

    - Protobuf序列化的二进制格式比XML或JSON更紧凑,因此在网络传输中节省带宽。 - 序列化和反序列化速度更快,因为它设计为机器友好的格式。 7. **版本兼容性**: - Protobuf支持向后兼容,即新版本的消息可以被...

    google protobuf-中英文使用手册

    1. **高效性**:protobuf序列化后的数据比JSON和XML更紧凑,减少网络传输时间和存储空间。 2. **易用性**:protobuf提供了简单易用的API,使得序列化和反序列化过程变得直观且易于实现。 3. **可扩展性**:可以通过...

    Python protocbuf

    Python Protobuf 深度解析与...总结起来,Python Protobuf提供了一种高效、跨平台的数据序列化机制,广泛应用于网络通信、数据存储等领域。通过学习和掌握Protobuf,可以提升Python应用程序的数据处理能力和兼容性。

    protobuf 2.3 google code

    1. **高效**:protobuf序列化的数据通常比XML或JSON更小,传输更快。 2. **跨平台**:支持多种编程语言,可以在不同的操作系统和编程环境中无缝工作。 3. **版本兼容性**:protobuf允许添加新的字段而不破坏旧的序列...

    protobuf-2.6.0.zip

    Protocol Buffers是一种高效、灵活且自动化的数据序列化机制,广泛应用于网络通信和数据存储等领域。这个版本的protobuf允许开发者定义数据结构,并将这些结构编码为二进制格式,以便在不同平台之间交换数据。 ### ...

    如何在mac环境中用python处理protobuf

    在mac操作系统中使用Python处理Protocol Buffers(简称Protobuf)涉及到...总的来说,Protobuf在数据通信领域是非常有用的,尤其在需要高效、紧凑的数据传输时,Protobuf比传统的XML等数据序列化方式有更好的表现。

    C++_protobuf

    protobuf,全称Protocol Buffers,是Google开发的一种数据序列化协议,它允许开发者定义数据结构的规范格式,然后将这些数据高效地编码和解码为二进制流,用于网络通信或者存储。在C++中使用protobuf,可以极大提高...

    protobuf-3.15.8.zip

    6. **扩展性与优化**:protobuf允许在不破坏兼容性的情况下添加新的字段,同时提供了如`optional`、`required`和`repeated`等字段修饰符来控制序列化行为。此外,protobuf还支持自定义选项以实现特定的编码优化。 7...

    Protobuf使用手册.doc

    protobuf 是 Google 开发的一种数据交换格式,用于描述结构化的数据,并能够生成相关的代码以便于序列化和反序列化。protobuf 的主要特点是平台独立、语言独立、可扩展和高效。 二、定义 .proto 文件 在使用 ...

    protobuf c++使用手册

    Python 版本的 Protobuf 支持多种序列化选项,包括将消息序列化为字符串或字节对象。 #### 13.4.6 展开 Python 版本的 Protobuf 同样支持扩展字段,使得在不改变现有消息结构的情况下可以轻松地添加新字段。 ####...

    protobuf-3.5.2 协议缓冲区 - 谷歌的数据交换格式

    与其他序列化库如JSON、XML相比,protobuf在序列化和反序列化速度以及存储空间上具有显著优势。这使得protobuf成为大数据、分布式系统和网络通信中的首选数据交换格式。 ### 8. 社区支持 protobuf拥有庞大的开发者...

    最新版本protobuf3.0

    **protobuf 3.0:新一代数据序列化框架** protobuf(Protocol Buffers)是Google开发的一种高效、灵活且易于使用的数据序列化协议,它允许开发者定义数据结构,然后生成能够在多种编程语言中使用的代码,用于读写...

    google protobuf英文手册

    Google Protocol Buffers(简称protobuf)是由Google开发的一种数据序列化格式,它是一种轻量级、高效、自动化的机制用于序列化结构化数据。protobuf的设计目标是提供一种语言无关、平台无关的扩展性方式用于网络...

    protobuf for java 插件

    protobuf for Java 插件是Google开发的一种数据序列化协议(Protocol Buffers)在Java平台上的实现,用于高效、紧凑地存储和传输结构化数据。它提供了编译器,可以将定义的数据结构转换为Java类,使得开发者能方便地...

    google protobuf 源代码

    Google Protobuf(Protocol Buffers)是Google开发的一种数据序列化协议,它允许开发者定义数据结构的格式,并将这些数据高效地编码和解码为二进制格式,适用于跨平台、跨语言的数据交换。Protobuf的设计目标是提高...

    GoogleProtoBuf开发者指南 非官方

    Protocol Buffer允许用户定义数据结构的模式,然后生成相应的代码,以便在不同的编程语言中轻松地序列化和反序列化这些数据。它通过`.proto`文件定义数据结构,其中包含了消息类型、字段、数据类型以及可选、必需和...

    protobuf 小例子 电话薄 源码

    protobuf,全称Protocol Buffers,是Google开发的一种数据序列化协议,用于高效地存储和传输结构化数据。它提供了一种语言中立、平台中立、可扩展的方式,让开发者可以方便地定义数据结构,然后生成能够序列化和反...

Global site tag (gtag.js) - Google Analytics