JSON-Tag-Aliase in Golang
In Golang wird das JSON-Strukturtag verwendet, um den JSON-Feldnamen anzugeben, der einem Strukturfeld entspricht. Ist es jedoch möglich, einem einzelnen Feld mehrere Namen zuzuweisen?
Die Antwort lautet „Ja“, aber nicht mit dem Encoding/JSON-Paket der Standardbibliothek. Um dies zu erreichen, können Sie JSON-Bibliotheken von Drittanbietern wie github.com/json-iterator/go nutzen.
Mit jsoniter
Mit jsoniter können Sie definieren mehrere JSON-Tags mithilfe der newtag-Eigenschaft. Hier ist ein Beispiel:
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} }
In diesem Beispiel definiert die TestJson-Struktur mehrere JSON-Tags für die Felder „Name“ und „Alter“. Bei der Serialisierung mit dem JSON-Paket der Standardbibliothek wird das Standard-JSON-Tag verwendet. Wenn Sie jedoch jsoniter mit der Newtag-Konfiguration verwenden, werden stattdessen die angegebenen Newtag-Werte verwendet.
Das obige ist der detaillierte Inhalt vonKann Golang mehrere JSON-Tags für ein einzelnes Strukturfeld verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!