使用 Go 偵測 JSON 字串中的重複屬性
如何在 Go 中辨識 JSON 字串中的重複屬性?讓我們深入研究使用 JSON 解碼和鍵值分析的解決方案。
解碼 JSON 字串
我們利用 json.Decoder 來遍歷 JSON 字串。當我們遇到物件時,我們會迭代它們的鍵和值來搜尋重複項。
檢查重複項
在檢查函數中,我們區分不同的定界符和句柄每種情況分別:
用法範例
為了示範其功能,讓我們定義一個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中文網其他相關文章!