我正在尝试解析protobuf消息,但如果我有嵌套消息,则解析失败。
发送消息的程序使用dotnet-protobufs。当我在消息上调用IsInitialized时它很好。当我在通过电线发送之前查看ToString()版本时,它看起来是正确的。
当我在客户端(c ++)获得它时,解析失败。如果我执行ParsePartialFromString然后执行.DebugString(),则不会正确构造嵌套消息。我得到这样的东西:
command: NEW
nested_message {
0: 0x727568541b121d0a
14 {
}
}
我知道这不是一个基本问题,因为当我使用非嵌套消息从同一个客户端和服务器执行此操作时,它可以正常工作。它是嵌套特有的东西。
我试过谷歌搜索但没有结果。有什么帮助吗?
修改: 这是执行对象创建的代码。我在对象上调用ToString()并通过线路发送它。
private Request createRequestString()
{
Request.Types.ClientDetails clientDetails = Request.Types.ClientDetails.CreateBuilder()
.SetClientTimestamp(DateTime.Now.ToLongDateString())
.Build();
Request.Types.Details details = Request.Types.Details.CreateBuilder()
.SetType(Request.Types.Details.Types.Types.NORMAL)
.SetCurrency("CND")
.SetDate(DateTime.Now.ToLongDateString())
.Build();
Request.Types.NewRequest newrequest = Request.Types.NewRequest.CreateBuilder()
.SetClientDetails(clientDetails)
.SetDetails(details)
.Build();
Request request = Request.CreateBuilder()
.SetCommand(Request.Types.Commands.NEW)
.SetNewRequest(newrequest)
.Build();
bool isClientGood = clientDetails.IsInitialized;
bool isDetailGood = details.IsInitialized;
bool isNewRequestGood = newrequest.IsInitialized;
bool isAllGood = request.IsInitialized;
return request;
}