协议缓冲区Java解析问题

时间:2015-09-15 20:40:01

标签: java protocol-buffers

我有.Proto文件,如下所示

message Port {
    repeated Info info = 1;
}

message Info {
    required string if_name = 1 ;
    optional Stats in_stats = 2;

}

message Stats {

    required uint64 pkts = 1 ;
    repeated Accounting fc_stats = 2;
}

message Accounting {
     optional string family = 1 ;
}

extend Sensors {
    optional Port InterfaceExt = 7;
}

我正在解析它,除了"重复"统计信息内的会计元素不会解析正确的数据。

此外,数组列表大小为会计元素零,这意味着它没有正确填充,但是如果我打印传感器对象,它将以原始格式提供数据,如下所示,

info {
        if_name: "xe"
        in_stats {
          pkts: 27
          2: "\n\004IPv4\020\003\030\343\355\277\240e \200\343\355\277\240e"
        }
    }

知道它有什么问题吗?

1 个答案:

答案 0 :(得分:1)

每个字段都需要有唯一的ID来区分它。

您的pktsfc_stats都有1

的ID

我建议其中一个2。

注意:它可以将1解码为pkts,但它不知道将2解码为什么。