[英]protoc-gen-go struct xxx covert to map[string]interface{}
由.proto文件生成的文件.pb.go的結構有三個附加字段和其他一些things.like這樣的:
當將此結構轉換為json時 ,如果一個字段為空,則該字段不會出現在json中。 現在我知道可以使用jsonpb.Marshaler來完成。
m := jsonpb.Marshaler{EmitDefaults: true}
現在,我覆蓋將結構 映射到map [string] interface {} ,並將其放入InfluxDB中 。 我必須將結構轉換為map [string] interface {} 。NewPoint需要此功能。 像這樣:
我在go中使用structs.Map(value)函數,轉換后的地圖具有三個附加字段,運行程序會導致錯誤,如下所示:
{"error":"unable to parse 'txt,severity=1 CurrentValue=\"1002\",MetricAlias=\"CPU\",XXX_sizecache=0i,XXX_unrecognized= 1552551101': missing field value"}
當我刪除這三個字段時,程序運行正常,這三個字段是自動生成的,並且我有很多結構。 我該怎么辦?謝謝!
Protobuf生成器添加了一些其他字段,其名稱以XXX
開頭,用於優化。 您無法更改protoc-gen-go
這種行為。
問題在於將struct
轉換為map[sting]interface{}
。 很難確定structs.Map
到底來自哪個包。 好像是從這里開始的: https : //github.com/fatih/structs/blob/master/structs.go#L89-此代碼使用reflect
來遍歷結構的所有字段並將它們推到map[sting]interface{}
。 您只需要編寫自己的FillMap
例程的稍作修改的版本FillMap
省略XXX
字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.