我试图对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
}
问题是这使得很难确切地看到实际工具中缺少哪个密钥或额外密钥。我正在考虑构建一个简单的地图密钥差异,但我想知道是否有现有的库已经这样做了吗?
答案 0 :(得分:0)
没有现有的功能,就像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)
}
}