ホームページ > バックエンド開発 > Golang > \'0\' と \'false\' (および \'1\' と \'true\') を使用して JSON からのブール アンマーシャリングを処理する方法

\'0\' と \'false\' (および \'1\' と \'true\') を使用して JSON からのブール アンマーシャリングを処理する方法

Linda Hamilton
リリース: 2024-11-26 10:11:13
オリジナル
247 人が閲覧しました

How to Handle Boolean Unmarshalling from JSON with

0 と False の両方を含む JSON からのブール値のアンマーシャリング

JSON データを解析するには、誤解を避けるためにデータ型を慎重に検討する必要があります。サービスがブール値を 0 と false (および 1 と true) として交換する場合、適切なアンマーシャリングを実現することが重要になります。

組み込みのエンコーディング/json パッケージは、カスタム タイプを使用してアンマーシャリング プロセスをカスタマイズする方法を提供します。 。カスタム タイプを定義することで、カスタムのアンマーシャリング ロジックを実装して、目的の変換を処理できます。

カスタム アンマーシャリング タイプ

json.Unmarshaler インターフェイスを実装するカスタム タイプを作成します。 。この型は、JSON データを目的のブール形式に変換します。

1

2

3

4

5

6

7

8

9

10

11

12

13

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

}

ログイン後にコピー

この例では、ConvertibleBoolean は、json.Unmarshaler インターフェイスを実装するカスタム ブール型です。これは、デフォルトの JSON アンマーシャリング プロセスをオーバーライドし、受信データを文字列としてチェックします。 true または false (またはそれに相当する数値 1 と 0) を表す文字列を識別すると、それに応じて ConvertibleBoolean 値を設定します。それ以外の場合は、エラーが返されます。

カスタム タイプの使用

カスタム アンマーシャリング タイプを作成したので、それを構造体で使用して、予期される JSON 構造を定義します。

1

2

3

4

type MyType struct {

    AsBoolean ConvertibleBoolean `json:"field1"`

    AlsoBoolean ConvertibleBoolean `json:"field2"`

}

ログイン後にコピー

例アンマーシャリング

カスタム タイプを適切に配置すると、JSON データを MyType 構造体にアンマーシャリングし、0 と false (および 1 と true) の両方をブール値に正しく変換できます。

1

2

3

4

5

6

7

8

9

input_json := `{

    "field1" : true,

    "field2" : 1

}`

 

obj := MyType{}

json_err := json.Unmarshal([]byte(input_json), &obj)

fmt.Printf("%v\n", obj.AsBoolean) //"true"

fmt.Printf("%v\n", obj.AlsoBoolean) //"true"

ログイン後にコピー

このサンプルの JSON データには「true」と「1」が含まれており、デフォルトのアンマーシャラーでは異なるタイプとして扱われます。ただし、ConvertibleBoolean を使用すると、両方の値が true として正しくアンマーシャリングされます。

以上が\'0\' と \'false\' (および \'1\' と \'true\') を使用して JSON からのブール アンマーシャリングを処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
関連するチュートリアル
人気のおすすめ
最新のコース
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート