让我说我有这种类型:
in := []byte(`{"bar":"aaa", "baz":123}`)
foo := &Foo{}
json.Unmarshal(in,foo)
我希望将这个json解组为它:
$Category = $Categories->where('CategoryID', $request->input('CategoryID'))
会成功。我想至少知道在处理过程中有些字段被跳过了。有没有什么好方法可以访问这些信息?
答案 0 :(得分:1)
您可能已经意识到可以将任何有效的json解组为map[string]interface{}
。已经解组为Foo
的实例已经没有可用的元数据,您可以在其中检查被排除的字段或类似的字段。但是,您可以在两种类型中解组,然后在地图中查看与Foo
上的字段不对应的键。
in := []byte(`{"bar":"aaa", "baz":123}`)
foo := &Foo{}
json.Unmarshal(in,foo)
allFields := &map[string]interface{}
json.Unmarshal(in, allFields)
for k, _ := range allFields {
fmt.Println(k)
// could also use reflect to get field names as string from Foo
// the get the symmetric difference by nesting another loop here
// and appending any key that is in allFields but not on Foo to a slice
}