Protobuf嵌套消息解析不起作用

时间:2011-02-24 21:18:20

标签: c++ protocol-buffers

我正在尝试解析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;         
}

0 个答案:

没有答案