我正在制作一个显示本地公共汽车实时位置的应用程序。我有一个API,可返回带有车辆位置的.pb (protobuf)
文件。我是第一次处理proto buffers
,不知道为什么我们不能像JSON
文件那样解析它们。
我在其文档中看到了一个名为"Swift-Protobuf"
的库。他们要求运行将protobuf
文件转换为快速对象的命令。但是,当我每分钟进行一次API调用时,都会返回protobuf
文件。如何每次都运行该命令?
$ protoc --swift_out=. my.proto
我只想将这些.pb
文件解析为一个快速对象。这样我就可以使用项目中的数据了。
答案 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应用程序和服务器编写代码。