2015-09-15 67 views
0

我有.Proto文件如下图所示协议缓冲的Java解析问题

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

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

pktsfc_stats都有我建议让他们中的一个2

1

一个id:它可以解码1pkts,但它不知道该怎么2作为解码。

+0

编辑该问题。 – Ammad

+0

@Ammad我会重新运行你的测试,因为它是无法解码的字段ID“2”。 –

+0

我确实重做了同样的结果。我的实际prorto文件有id = 1和2. – Ammad