ホームページ >バックエンド開発 >Golang >Go を使用して JSON 文字列内の重複属性を検出するにはどうすればよいですか?

Go を使用して JSON 文字列内の重複属性を検出するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-04 14:04:13986ブラウズ

How to Detect Duplicate Attributes in JSON Strings Using Go?

Golang を使用して JSON 文字列内の重複属性を検出する

Golang を使用して JSON 文字列内の重複属性を検出するには、json を使用した再帰的アプローチを使用します。デコーダを使用することができます。このメソッドは、JSON 構造を走査し、各オブジェクト レベルで重複キーをチェックします。

このアプローチを実装するには:

  1. json.Decoder とdup コールバック関数。
  2. d.Token() を使用して JSON 内の次のトークンを取得します。 stream.
  3. トークンが区切り文字 { の場合、オブジェクトを入力し、キーを追跡するためのマップを作成します。
  4. オブジェクトを反復処理して、マップ内の重複キーをチェックします。重複が見つかった場合は、dup 関数を呼び出します。
  5. check() 関数を使用して値を再帰的にチェックします。
  6. トークンが区切り文字 [ の場合は、配列を入力し、要素を再帰的に繰り返します。各要素をチェックします。
  7. 末尾の区切り文字を使用して、解析。

dup 関数は、解析プロセスのロギング、記録、停止など、必要に応じて重複を処理するようにカスタマイズできます。

例使用法

func main() {
    data := `{"a": "b", "a":true,"c":["field_3 string 1","field3 string2"]}`
    dup := func(path []string) error {
        fmt.Printf("Duplicate %s\n", strings.Join(path, "/"))
        return nil
    }

    if err := check(json.NewDecoder(strings.NewReader(data)), nil, dup); err != nil {
        log.Fatal(err)
    }
}

出力

Duplicate a

以上がGo を使用して JSON 文字列内の重複属性を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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