2015-09-15 66 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