使用 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中文网其他相关文章!