當映射不一致地將布林值表示為0 和false(或1 和true)的服務的輸出時,它在解組期間有必要採取更寬鬆的方法。雖然在 JSON 標籤上添加 ,string 可能還不夠,但還有其他可用的解決方案。
解決方案是定義自訂類型(例如 ConvertibleBoolean)來處理不明確的情況布林值。此類型包含一個 UnmarshalJSON 方法,該方法根據指定的約定將輸入資料轉換為布林值。
type ConvertibleBoolean bool func (bit *ConvertibleBoolean) UnmarshalJSON(data []byte) error { asString := string(data) if asString == "1" || asString == "true" { *bit = true } else if asString == "0" || asString == "false" { *bit = false } else { return errors.New(fmt.Sprintf("Boolean unmarshal error: invalid input %s", asString)) } return nil }
此自訂類型可確保將「1」和「0」等輸入值解釋為布林值,允許解析而不會出現錯誤。
需要注意的是,為了自訂 UnmarshalJSON 方法要正確運行,必須將其實作為指標方法接收器。這是因為指標允許修改底層值。
透過利用此方法,您可以有效地從 JSON 資料中解組不明確的布林值,確保結果結構包含預期值,儘管輸入資料不一致.
以上是解組 JSON 時如何處理不明確的布林值(0/1、真/假)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!