使用Protobuf的json格式转换为json字符串时,如何维护反斜杠



我必须使用gRPC。

我正在将收到的对象转换为json字符串,出现了以下问题

示例原型

hash: "v16177350207y225wM335]1(Z26630537627310_v32116Qv33230303^32|375"

但是,如果我使用Protobuf的util JsonFormat进行转换,我会得到以下结果

"hash": "dg5/6Id5lXdN3V0xKFq2xf4XyF920Q5RC9oYw14afP0="

我想把它恢复到原来的形式,有没有办法写另一个库或反向解码它?

基本上忘记格式;这只是表示相同数据的两种方式。第二个版本是base-64,并解码为字节:

76-0E-7F-E8-87-79-95-77-4D-DD-5D-31-28-5A-B6-C5-FE-17-C8-5F-76-D1-0E-51-0B-DA-18-C3-5E-1A-7C-FD

第一个版本是带有八进制转义的C-literal风格;v是ASCII 118,也就是十六进制0x76;16是十进制14的转义八进制,也就是十六进制0x0E;177是十进制127的转义八进制,也就是十六进制0x7F-等等。大多数语言都有基于64的编码/解码;带有八进制转义序列的C-literal样式是。。。更小众,你可能需要为此编写自己的解码器。根据第一个字符串的来源,值得注意的是,protobuf(至少是模式变体(还允许通过uNNNNUNNNNNNNN,IIRC进行固定宽度的unicode转义。注意:proto模式中的八进制可能会短路:12n的意思与12n相同——最多取3位数字,但如果遇到非数字字符,它作为较短形式仍然有效。

最新更新