ブール値を 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、true/false) を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。