是否可以直接在iOS中解析API protobuf文件?

时间:2019-06-24 12:12:30

标签: ios swift protocol-buffers

我正在制作一个显示本地公共汽车实时位置的应用程序。我有一个API,可返回带有车辆位置的.pb (protobuf)文件。我是第一次处理proto buffers,不知道为什么我们不能像JSON文件那样解析它们。

我在其文档中看到了一个名为"Swift-Protobuf"的库。他们要求运行将protobuf文件转换为快速对象的命令。但是,当我每分钟进行一次API调用时,都会返回protobuf文件。如何每次都运行该命令?

$ protoc --swift_out=. my.proto

我只想将这些.pb文件解析为一个快速对象。这样我就可以使用项目中的数据了。

1 个答案:

答案 0 :(得分:0)

  

他们要求运行命令以将protobuf文件转换为快速对象。但是,当我每分钟进行一次API调用时,都会返回protobuf文件。如何每次都运行该命令?

我认为您对文档有误解:您无需为收到的每个.pb文件运行protoc --swift_out=. my.proto;您可以使用该命令生成代码,该代码知道如何根据您在.proto文件中定义的架构来读写​​数据。然后,您可以获取该生成的代码并将其添加到您的iOS项目中,然后,您可以使用该代码读取和写入与您的架构匹配的protobuf数据。

  

我正在制作一个显示本地公交车实时位置的应用程序。

因此,在开始之前,您将需要一个.proto文件,该文件描述提供公交车位置数据的人使用的数据格式,则需要提供该数据的人使用使用SwiftProtobuf或类似工具为其.proto文件生成Swift解析器。

  

...我不知道为什么我们不能像JSON文件那样解析它们。

好吧,protobuf格式的要点是与JSON或XML无关的语言,并且使用起来比JSON或XML更快/更容易,并且Google显然做出的一项设计决策是牺牲人类对尺寸/速度的可读性。因此,您可以可以编写一个解析器来解析这些文件,就像处理JSON数据一样,但是您必须了解格式的工作原理。但是,描述要发送的数据并使程序生成代码要容易得多。这种安排的一个不错的方面是,您可以描述一次架构,然后生成适用于该架构的多种语言的代码,因此您不必分别为iOS应用程序,Android应用程序和服务器编写代码。