Golang 中的 JSON 標籤別名
在 Golang 中,json 結構體標籤用於指定結構體字段名稱對應的 JSON 字段。但是,是否可以為單一欄位分配多個名稱?
答案是可以,但不能使用標準函式庫的encoding/json 套件。為此,您可以利用第三方 JSON 函式庫,例如 github.com/json-iterator/go。
使用 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中文網其他相關文章!