json - 去测试 map 之间的区别

标签 json go

我正在尝试对 json 对象运行一些测试。目前我有一个函数来比较 json 字符串并在它们不匹配时输出错误消息:

func assertJsonEqual(expected, actual string) bool {
    actualStruct := make(map[string]interface{})
    expectedStruct := make(map[string]interface{})

    json.Unmarshal([]byte(expected), &expectedStruct)
    json.Unmarshal([]byte(actual), &actualStruct)

    if !reflect.DeepEqual(expectedStruct, actualStruct) {
        log.Errorf("Expected: %#v\n but got %#v", expectedStruct, actualStruct)
        return false
    }
    return true
}

问题在于,这使得在实际工具中很难准确地看到缺少或多余的键。我正在考虑构建映射键的简单差异,但想知道是否有一个现有的库已经这样做了?

最佳答案

没有一个现有的功能,就像 5 行代码。

diff := &[]string{} // initialize some storage for the diff

for _, k := range map1 { // range over one of the maps
    if _, ok := map2[k]; !ok { // check if the key from the first map exists in the second
        diff = append(diff, k)
    }
}

关于json - 去测试 map 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37844810/

相关文章:

javascript - 我如何在 Zapier 触发器中对数组进行 JSON.parse?

javascript - 如何使用变量作为 json 属性?

php - 检查 JSON 的响应是否为空

go - 如何在同一应用程序中使用 gorilla websocket和mux?

go - 向多个收件人发送 smtp 电子邮件

golang - 递归函数运行期间 slice 中指针的内容发生变化

golang递归地反射(reflect)字段类型和值

python - 从 json 文件中读取 int

javascript - 加载 json 后,在 AngularJS 应用程序中向 HTML 文档添加一个类?

go - 遍历 golang 中连接的端口列表