"encoding/json"
パッケージを使用して、アプリケーションのインポートされたパッケージの1つで宣言された構造体をマーシャリングしたいと思います。
例えば。:
type T struct {
Foo int
}
インポートされるため、構造体で使用可能な(エクスポートされた)フィールドはすべて大文字で始まります。しかし、小文字のキー名を持ちたいです:
out, err := json.Marshal(&T{Foo: 42})
になります
{「フー」:42}
しかし、私は取得したい
{"foo":42}
簡単な方法で問題を回避することは可能ですか?
encoding/json.Marshal のドキュメントをご覧ください。 struct fieldタグを使用して、生成されたjsonのフォーマットを決定する方法について説明します。
例えば:
type T struct {
FieldA int `json:"field_a"`
FieldB string `json:"field_b,omitempty"`
}
これにより、次のようにJSONが生成されます。
{
"field_a": 1234,
"field_b": "foobar"
}
エクスポートするキーを使用して独自の構造体を作成し、小文字の名前に適切なjsonタグを付けることができます。次に、目的の構造体をJSONにエンコードする前に自分の構造体にコピーできます。または、ローカル構造体の作成に煩わされたくない場合は、おそらくmap[string]interface{}
そしてそれをエンコードします。