Golang の JSON タグ エイリアス
Golang では、json struct タグを使用して、構造体フィールドに対応する JSON フィールド名を指定します。しかし、単一のフィールドに複数の名前を割り当てることは可能ですか?
答えは「はい」ですが、標準ライブラリのエンコーディング/json パッケージではそうではありません。これを実現するには、github.com/json-iterator/go などのサードパーティの JSON ライブラリを利用できます。
jsoniter の使用
jsoniter を使用すると、以下を定義できます。 newtag プロパティを使用した複数の JSON タグ。以下に例を示します。
package main import ( "fmt" "github.com/json-iterator/go" ) type TestJson struct { Name string `json:"name" newtag:"newname"` Age int `json:"age" newtag:"newage"` } func main() { var json = jsoniter.ConfigCompatibleWithStandardLibrary data := TestJson{} data.Name = "zhangsan" data.Age = 22 byt, _ := json.Marshal(&data) fmt.Println(string(byt)) // {"name":"zhangsan","age":22} var newJson = jsoniter.Config{ TagKey: "newtag", }.Froze() byt, _ = newJson.Marshal(&data) fmt.Println(string(byt)) // {"newname":"zhangsan","newage":22} }
この例では、TestJson 構造体が Name フィールドと Age フィールドに複数の JSON タグを定義します。標準ライブラリの json パッケージを使用してシリアル化する場合、デフォルトの json タグが使用されます。ただし、jsoniter を newtag 設定で使用する場合は、代わりに指定された newtag 値が使用されます。
以上がGolang は単一の構造体フィールドに複数の JSON タグを使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。