在UnmarshalJSON 中呼叫json.Unmarshal 而不會導致堆疊溢位
問題:
問題:
解決方案:
解組後,對原件執行任何自訂後處理type.
推理:
使用type 關鍵字建立新類型會有效地刪除原始類型中的所有方法。當在解組過程中使用包裝器類型時,JSON 解碼器將找不到自訂的 UnmarshalJSON 實現,並將使用預設的實作。這可以防止堆疊溢位問題。
範例:
type Person struct { Name string `json:"name"` Age int `json:"age"` } func (p *Person) UnmarshalJSON(data []byte) error { type personWrapper Person if err := json.Unmarshal(data, (*personWrapper)(p)); err != nil { return err } // Post-processing after unmarshaling: if p.Age < 0 { p.Age = 0 } return nil }
考慮Age 欄位的Person 類型:
此技術允許自訂解組後進行後處理,同時避免與呼叫json.Unmarshal 相關的堆疊溢位問題解組JSON。以上是在 `UnmarshalJSON` 中呼叫 `json.Unmarshal` 時如何避免堆疊溢位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!