Protobug Message to JSON转换字节字段将字符串转换为base64?

时间:2018-03-19 08:26:51

标签: base64 byte protobuf.js

我有一个如下所示的原型文件:

syntax = "proto2";
package user;

message user_message {
    required bytes   username = 1;
    optional string   phonenum  = 2;
    optional string   password  = 3;
}

当我收到消息时,会将其序列化为发件人的字符串。

我尝试转换为JSON对象:

base_msg = msg_periodic_pb2.m_apps_message()
base_msg.ParseFromString(message)
base_msg = json_format.MessageToJson(base_msg)

当我打印base_msg时,在将消息转换为JSON后,用户名将转换为base64字符串。我怎么能避免这个?

1 个答案:

答案 0 :(得分:0)

Check this comment.

“实际上这种行为是可以预期的,因为字节字段(与字符串字段不同)可以包含非UTF8二进制数据,并且因为它不能直接用JSON表示,所以我们必须对其进行base64编码。”

所以,如果你真的想拥有字符串。你不能将protobuf类型作为字节。