首頁 > 後端開發 > Golang > 如何使用 Go 偵測 JSON 字串中的重複屬性?

如何使用 Go 偵測 JSON 字串中的重複屬性?

Susan Sarandon
發布: 2024-12-04 07:44:12
原創
953 人瀏覽過

How Can I Detect Duplicate Attributes in JSON Strings Using Go?

使用 Go 偵測 JSON 字串中的重複屬性

如何在 Go 中辨識 JSON 字串中的重複屬性?讓我們深入研究使用 JSON 解碼和鍵值分析的解決方案。

解碼 JSON 字串

我們利用 json.Decoder 來遍歷 JSON 字串。當我們遇到物件時,我們會迭代它們的鍵和值來搜尋重複項。

檢查重複項

在檢查函數中,我們區分不同的定界符和句柄每種情況分別:

  • 物件({}): 我們建立一個映射來追蹤唯一鍵。如果找到重複的鍵,我們呼叫使用者定義的 dup 函數,該函數可以記錄重複項或傳回錯誤以終止遍歷。
  • Arrays ([]): 我們對待每個元素作為切片中的項目並遞歸檢查該項目中的重複項。

用法範例

為了示範其功能,讓我們定義一個printDup 函數來列印重複的鍵路徑並呼叫對範例JSON 字串的檢查:

func printDup(path []string) error {
    fmt.Printf("Duplicate %s\n", strings.Join(path, "/"))
    return nil
}

...

data := `{"a": "b", "a":true,"c":["field_3 string 1","field3 string2"], "d": {"e": 1, "e": 2}}`
if err := check(json.NewDecoder(strings.NewReader(data)), nil, printDup); err != nil {
    log.Fatal(err)
}
登入後複製

這將輸出:

Duplicate a
Duplicate d/e
登入後複製

處理重複項錯誤

或者,我們可以在遇到的第一個重複鍵上產生錯誤:

var ErrDuplicate = errors.New("duplicate")

func dupErr(path []string) error {
    return ErrDuplicate
}

...

data := `{"a": "b", "a":true,"c":["field_3 string 1","field3 string2"], "d": {"e": 1, "e": 2}}`
err := check(json.NewDecoder(strings.NewReader(data)), nil, dupErr)
if err == ErrDuplicate {
    fmt.Println("found a duplicate")
} else if err != nil {
    // some other error
    log.Fatal(err)
}
登入後複製

以上是如何使用 Go 偵測 JSON 字串中的重複屬性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板