swift 中的 Protobuf 数据反序列化错误
Protobuf data deserializing error in swift
我正在尝试反序列化来自 POST 查询的响应数据。但是我的原型反序列化器 returns 错误:
'InvalidProtocolBuffer', reason: 'Invalid Tag: last tag 76'
这是来自其余客户端的响应字符串:
"EJMDGhnQlNC+0YHRgtGD0L8g0LfQsNC60YDRi9GC"
下面是我如何从这个字符串创建数据:
let data = dataString.dataUsingEncoding(NSUTF8StringEncoding);
并解析它:
var _deData = MobileGetNewsResponse.parseFromData(jsonData!)
有什么解决这个问题的建议吗?
"EJMDGhnQlNC+0YHRgtGD0L8g0LfQsNC60YDRi9GC"
此数据本身不是 protobuf。看起来它可能是一个 base64 编码的 protobuf。您需要先对其进行 base64 解码,然后将其传递给 protobuf 解析器。
请记住,protobufs 是原始字节,而不是文本。永远不要尝试将原始 protobuf 存储在字符串中,也不要尝试将其解释为 Unicode 或 UTF-8。它只是字节。 (base64 是将字节转换为文本的一种方式。)
我也很关心这条线:
var _deData = MobileGetNewsResponse.parseFromData(jsonData!)
JSON和Protobufs是两种完全不同的格式。您不应该尝试将 protobuf 解析为 JSON,反之亦然。
我正在尝试反序列化来自 POST 查询的响应数据。但是我的原型反序列化器 returns 错误:
'InvalidProtocolBuffer', reason: 'Invalid Tag: last tag 76'
这是来自其余客户端的响应字符串:
"EJMDGhnQlNC+0YHRgtGD0L8g0LfQsNC60YDRi9GC"
下面是我如何从这个字符串创建数据:
let data = dataString.dataUsingEncoding(NSUTF8StringEncoding);
并解析它:
var _deData = MobileGetNewsResponse.parseFromData(jsonData!)
有什么解决这个问题的建议吗?
"EJMDGhnQlNC+0YHRgtGD0L8g0LfQsNC60YDRi9GC"
此数据本身不是 protobuf。看起来它可能是一个 base64 编码的 protobuf。您需要先对其进行 base64 解码,然后将其传递给 protobuf 解析器。
请记住,protobufs 是原始字节,而不是文本。永远不要尝试将原始 protobuf 存储在字符串中,也不要尝试将其解释为 Unicode 或 UTF-8。它只是字节。 (base64 是将字节转换为文本的一种方式。)
我也很关心这条线:
var _deData = MobileGetNewsResponse.parseFromData(jsonData!)
JSON和Protobufs是两种完全不同的格式。您不应该尝试将 protobuf 解析为 JSON,反之亦然。