文字列構造体に整数を逆シリアル化するのに苦労しています。 構造体フィールドは文字列であり、私のライブラリのユーザから割り当てられることが期待されています。だから私はそれを文字列にしたいのです。なぜなら、データベースに書き込む目的のために、私は実際に内部の値を気にしないからです。 ユーザはテキストを提供することができますが、整数だけを割り当てるものもあります。私は有効なJSON値で終わる文字列の代わりに整数であるため、Fooのフィールドに構造体の中にデシリアライズしませんたまにJSON非整数フィールドを文字列に変換する
type Test struct {
Foo string
}
:
をは、この構造体を考えてみましょう
{ "foo": "1" } // works
{ "foo": 1 } // doesn't
json.Unmarshalは、次のエラーで爆破します:https://play.golang.org/p/4Qau3umaVm: json: cannot unmarshal number into Go struct field test.Foo of type string
は、再生を参照してください。
他のJSONライブラリ(これ以外の言語でも)では、ターゲットフィールドが文字列で、整数を取得する場合は、通常、デシリアライザはintを文字列にラップして処理します。これはGoで達成できますか?
私は本当にデータは、私がjson.Unmarshal
unsensitiveこれに加える必要があるに来る方法を制御することはできませんので
interface{}
としてはFooを定義することです。..
これを行う方法に関するアイデア?私は基本的に逆を必要としますjson:",string"
あなたは[json.Unmarshaler](https://golang.org/pkg/encoding/json/#Unmarshaler)インターフェースを実装することができます。 – mkopriva