ホームページ  >  記事  >  バックエンド開発  >  Go で JSON マーシャル エラーを処理する方法?

Go で JSON マーシャル エラーを処理する方法?

DDD
DDDオリジナル
2024-11-01 08:34:30436ブラウズ

How to Handle JSON Marshal Errors in Go?

Go での JSON Marshal エラー処理

Go で json.Marshal 関数を使用する場合、エラーを引き起こす可能性のある入力データを考慮することが重要です。公式ドキュメントで述べられているように、循環データ構造はサポートされておらず、それらをマーシャリングしようとすると無限再帰が発生し、最終的には実行時パニックが発生します。

パニックではないエラー状態を示すために、次のようなプログラムを作成しましょう。 json.Marshal が返す可能性のある 2 種類のエラー: UnsupportedTypeError と UnsupportedValueError.

<code class="go">package main

import (
    "encoding/json"
    "fmt"
    "math"
)

func main() {
    // UnsupportedTypeError: marshalling an invalid type (channel)

    ch := make(chan int)
    _, err := json.Marshal(ch)
    if e, ok := err.(*json.UnsupportedTypeError); ok { // Check for specific error type
        fmt.Println("UnsupportedTypeError:", e.Type)
    } else {
        fmt.Println("Error:", err)
    }

    // UnsupportedValueError: marshalling an invalid value (infinity)

    inf := math.Inf(1)
    _, err = json.Marshal(inf)
    if e, ok := err.(*json.UnsupportedValueError); ok { // Check for specific error type
        fmt.Println("UnsupportedValueError:", e.Value)
    } else {
        fmt.Println("Error:", err)
    }
}</code>

出力:

UnsupportedTypeError: chan int
UnsupportedValueError: +Inf

特定の入力を提供することで、このプログラムは json.Marshal が返すことができることを示します。パニックを引き起こすことなく、非 nil エラーが発生します。これにより、開発者はアプリケーション内でこれらのエラーを適切に処理できるようになります。

以上がGo で JSON マーシャル エラーを処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。