給定一個嵌套結構體的結構體,目標是動態修改結構體中的JSON 標籤在JSON 對其進行編碼之前,結構中的特定欄位。所需的 JSON 輸出是覆蓋特定的欄位名稱。
在MarshalJSON 中使用匿名結構
Go 版本1.8 及更高版本,可以採用一種技術在運行時動態更改字段的JSON 標籤。這涉及到在原始結構的 MarshalJSON 方法中建立具有所需欄位標記的匿名結構。
這裡,別名結構具有與 User 結構相同的字段,但 Name 字段具有所需的字段JSON 標籤(“名稱”而不是“第一個”)。透過傳回別名結構體的 JSON 編碼,可以動態覆寫 JSON 欄位名稱。
要迭代結構體的所有欄位(包括嵌入的結構體),請使用反射包如下:
此程式碼將迭代所有字段,包括嵌入的Another 結構中的字段,並列印JSON每個字段的標籤和字段值。
以上是如何在運行時動態更改 Go 結構中的 JSON 標籤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!