[英]Correct way to represent repeated data in stream
关于如何支持repeated
消息的任何建议? 具体来说,如果这些消息都是一种类型。 在JSON中,这些实际上是一个数组。 就我而言,我并不在乎索引,但这并不是说数组类型对protobuf不会有用。 我已经考虑过以下方法,但是我不喜欢这种折衷方法。 阅读Google文档尚不清楚哪种方法适用于集合。
使用任何现有消息,只有一堆空字段
您可以使用现有类型,仅包含所需的重复消息集合。 因此,如果用户消息类型重复了照片消息类型,请发送一个空的用户,除了“照片收集”字段外什么都不要。
创建包装器类型
这是#1的工作,但不要使用现有的类型,而是创建一个新的类型。 这有点干净,因为它是显式的,并且不使用空字段。 仍然有消息输入。 在照片的情况下,这将是带有重复的照片消息字段的ArrayOfPhotos消息。
使用定界流
我还没有尝试过这种方法,所以不太确定,但是protobuf支持定界流。 这看起来很酷,但是我想它的缺点是打字强度较低。 流可能包含不同消息类型的抓包。
尽管此选项不需要额外的消息类型,但似乎确实有好处。
在照片的情况下,这将是分隔的照片消息,但同样,您似乎也可以在其中添加用户消息。
听起来好像您在尝试询问顶级数据是数组而不是记录时该怎么做。 (从您的问题中并不能完全清楚您是否正在询问顶级人员,但否则我将无法理解该问题。)
要问自己的问题是:
我不建议在任何情况下都使用解决方案#1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.