205

"encoding/json"このパッケージを使用して、アプリケーションのインポートされたパッケージの 1 つで宣言された構造体をマーシャリングしたいと考えています。

例えば。:

type T struct {
    Foo int
}

インポートされるため、構造体で使用可能な (エクスポートされる) フィールドはすべて大文字で始まります。しかし、小文字のキー名が必要です。

out, err := json.Marshal(&T{Foo: 42})

結果として

{"フー":42}

しかし、私は取得したいです

{"フー":42}

簡単な方法で問題を回避することは可能ですか?

4

2 に答える 2

308

encoding/json.Marshalのドキュメントをご覧ください。構造体フィールド タグを使用して、生成された json のフォーマット方法を決定する方法について説明します。

例えば:

type T struct {
    FieldA int    `json:"field_a"`
    FieldB string `json:"field_b,omitempty"`
}

これにより、次のように JSON が生成されます。

{
    "field_a": 1234,
    "field_b": "foobar"
}
于 2012-07-27T19:14:25.923 に答える
9

エクスポートするキーを使用して独自の構造体を作成し、小文字の名前に適切な json タグを与えることができます。次に、JSON としてエンコードする前に、目的の構造体を自分の構造体にコピーできます。または、ローカル構造体を作成することに煩わされたくない場合は、おそらく を作成しmap[string]interface{}てエンコードすることができます。

于 2012-07-27T19:11:24.680 に答える