Golang JSON マーシャリングでのエラー処理
JSON データ構造は循環参照を表すことができず、Go の json.Marshal 関数は循環参照を処理できません。その結果、循環構造を Marshal に渡すと、無限再帰と実行時パニックが発生します。
循環構造以外にも、サポートされていない型や無効な値が発生した場合、json.Marshal は非 nil エラーを返す可能性があります。
サポートされていない型
サポートされていないデータ型をマーシャルしようとすると、Marshal は UnsupportedTypeError を返します。例:
<code class="go">import "encoding/json" func main() { ch := make(chan int) _, err := json.Marshal(ch) if _, ok := err.(*json.UnsupportedTypeError); ok { // Error: Unmarshal: unsupported type: chan int } }</code>
サポートされていない値
Marshal は、無効な値をマーシャルしようとすると UnsupportedValueError を返すこともあります。例:
<code class="go">import ( "encoding/json" "math" ) func main() { positiveInfinity := math.Inf(1) _, err := json.Marshal(positiveInfinity) if _, ok := err.(*json.UnsupportedValueError); ok { // Error: json: unsupported value: +Inf } }</code>
これらの条件を理解することで、開発者はエラーを適切に処理し、json.Marshal が期待した結果を返すか、適切なエラーを処理できるようになります。
以上がGolang での JSON マーシャリング中のエラーはどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。