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