Golang を使用した JSON 文字列内の重複属性の検出
この記事では、Golang を使用して JSON 文字列内の重複属性を特定することに焦点を当てています。 JSON (JavaScript Object Notation) は、データ交換に広く使用されているデータ形式です。重複の検出は、データの整合性を維持し、一貫した処理を保証するために不可欠です。
JSON デコーダーとカスタム重複検出関数の使用
重複属性を検出するには、json.Decoder が使用されます。 JSON 文字列を走査します。 check 関数が導入されました。この関数は、JSON 構造を再帰的に探索し、キーと値の重複を検査します。
実装の概要
-
check function: JSON トークンを反復処理し、オブジェクトとオブジェクトを区別します。 arrays.
-
オブジェクト処理: オブジェクトの場合、マップを使用して検出されたキーを追跡し、重複を防ぎます。重複キーが検出された場合、提供された dup 関数が呼び出されます。
-
配列処理: 配列の場合、各要素が再帰的に検査されます。
-
dup 関数: このカスタム関数は、重複を検出したときに実行するアクション (重複を印刷するか、メッセージを返す) を定義します。エラー。
使用例
指定された JSON 文字列を検討します:
1 | { "a" : "b" , "a" :true, "c" : [ "field_3 string 1" , "field3 string2" ]}
|
ログイン後にコピー
重複キーを出力するには:
1 2 3 4 5 6 7 8 9 | func printDup(path []string) error {
fmt.Printf( "Duplicate %s\n" , strings.Join(path, "/" ))
return nil
}
data := ...
if err := check(json.NewDecoder(strings.NewReader(data)), nil, printDup); err != nil {
log.Fatal(err)
}
|
ログイン後にコピー
重複をキャッチエラー
最初の重複キーが見つかったときに JSON トラバーサルを停止するには:
1 2 3 4 5 6 7 8 9 10 | var ErrDuplicate = errors.New( "duplicate" )
func dupErr(path []string) error {
return ErrDuplicate
}
data := ...
if err := check(json.NewDecoder(strings.NewReader(data)), nil, dupErr); err == ErrDuplicate {
fmt.Println( "found a duplicate" )
}
|
ログイン後にコピー
結論
この手法は、カスタマイズ可能な、 JSON 文字列内の重複属性を検出するための堅牢なアプローチ。 json.Decoder を活用し、カスタムの重複処理関数を定義することで、開発者はデータの整合性を維持し、一貫した JSON 処理を保証できます。
以上がGolang は JSON 文字列内の重複する属性をどのように検出して処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。