2016-05-09 7 views
2

問題:リクエストをサーバーに送信し、JSON形式の応答を取得します。私はそれを構造体に非マーシャルすることができますが、同じデータを持つ新しいJSONファイルを作成する必要がありますが、別のJSONタグが必要です。例えば複数のJSONタグを持つ構造体を使用することは可能ですか

は、次のコードでは、私はその後、私はemployee_nameにタグnameを変更し、ageを省略し、別のサーバーに送信する必要があり、Fooにサーバーと非整列化し、それから{"name":"Sam","age":20}を得る:

type Foo struct { 
     Name string `json:"name"` 
     Age int `json:"age"` 
    } 

    type Bar struct { 
     Name string `json:"employee_name"` 
     Age int `json:"-"` 
    } 

私はちょうど新しいBarを作成し、すべてのデータを保存することができます知っているが、多くのフィールドがあります。私はこのように複数のJSONタグを付ける方法があるかどうか疑問に思っていました。

type Foo struct { 
     Name string `json:"name" json:"employee_name"` 
     Age int `json:"age" json:"-"` 
    }   

ありがとうございます。

答えて

2

これはできません。 encoding/jsonパッケージは、structタグ内のjsonキーのみを処理します。 jsonキーが複数の場合(例のように)リストされている場合、最初のオカレンスが使用されます(これはStructTag.Get()に実装されています)。

これは、encoding/jsonパッケージの実装制限であり、Goの実装制限ではないことに注意してください。複数のタグキー(例:json1json2)をサポートするJSONエンコードパッケージを作成したり、同じキーを複数回(例のように)作成すると簡単に作成できます。

関連する問題