我正在將整數反序列化爲字符串struct字段。 struct字段是一個字符串,預計可以從我的庫的用戶分配。這就是爲什麼我希望它是一個字符串,因爲爲了將它寫入數據庫,我實際上並不關心裏面的值。 用戶可以提供文本,但有些只是分配整數。JSON將整數字段轉換爲字符串
考慮這樣的結構:
type Test struct {
Foo string
}
有時候,我結束了一個JSON值是有效的,但不會反序列化到結構由於富場是一個整數,而不是字符串:
{ "foo": "1" } // works
{ "foo": 1 } // doesn't
json.Unmarshal將炸燬,出現以下錯誤: json: cannot unmarshal number into Go struct field test.Foo of type string
見再現:https://play.golang.org/p/4Qau3umaVm
現在在其他所有JSON庫(使用其他語言)中,如果目標字段是字符串,並且您獲得一個整數,則反序列化器通常會將int整型包裝到一個字符串中,然後完成。這可以在Go中實現嗎?
因爲我實在無法控制數據是怎麼來的,我需要做json.Unmarshal
不敏感這個 - 其他的解決辦法是定義爲富其中interface{}
不必要我與類型的斷言等代碼複雜..
任何想法如何做到這一點?我基本上需要json:",string"
的反例
您可以實現的[json.Unmarshaler(https://golang.org/pkg/encoding/json/#Unmarshaler)接口。 – mkopriva