將動態鍵解組到Go 中的結構字段
當處理不符合預定結構的JSON 資料時,解組變得更加困難具有挑戰性的。在這種情況下,您有一個名為「things」的物件中包含動態鍵的 JSON 設定檔。
要解決此問題,一種解決方案是在結構中使用映射來捕獲動態鍵。下面是一個範例:
type X struct { Things map[string]Thing } type Thing struct { Key1 string Key2 string }
「Things」字段不是為每個鍵定義特定的結構體字段,而是儲存鍵值對的映射,其中鍵是動態鍵。
要使用此方法解組 JSON 數據,您可以執行以下操作:
var x X if err := json.Unmarshal(data, &x); err != nil { // handle error }
這會將 JSON解組到“X”結構中,並將動態鍵映射到其中適當的結構實例
但是,如果您仍然希望將鍵值作為結構體中的字段而不是地圖鍵的一部分,則可以使用以下方法:
type Thing struct { Name string `json:"-"` // <-- add this field Key1 string Key2 string } ... // Update the name field after unmarshalling for k, t := range x.Things { t.Name = k x.Things[k] = t }
這涉及在「Name」欄位中新增一個「-`json」標籤,以在解組過程中忽略它。解組後,使用循環將動態鍵指派給映射中每個結構實例的「Name」欄位。
以上是如何將帶有動態鍵的 JSON 解組到 Go 中的結構欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!