Sup*_*Ham 2 json struct dictionary http go
我正在为模型上的Update操作编写REST端点.所述映射是简单地将请求的身体的转发作为[]byte到json.Unmarshal.但是,我现在正试图过滤掉uuid所述模型上的属性.因此,而不是解组到模型我现在做给一个map[string]interface{},然后运行delete(m, "uuid").
在这一点上我有地图的数据,但我怎么能养活它放入json到其映射,因为它通常会调用时Unmarshal或Decode?有没有比编组更好的选择[]byte,然后在模型上解组?
您可以标记对象(结构)的UUID字段,json:"-"以便将其从编组/解组过程中排除,例如:
type User struct {
Name string `json:"name"`
UUID string `json:"-"`
}
Run Code Online (Sandbox Code Playgroud)
如果您确实需要在应用程序的其他位置编组/解组UUID字段,那么最简单的解决方案是在解组前存储UUID字段,然后在编组后恢复它,例如:
u := getUser() // acquire your object
uuid := u.UUID // save field
err := json.Unmarshal(data, &u)
// handle error
u.UUID = uuid // restore field
Run Code Online (Sandbox Code Playgroud)
将其包装在实用程序函数中,以便您可以重用它:
func decodeUser(u *User, data []byte) error {
uuid := u.UUID // save field
if err := json.Unmarshal(data, &u); err != nil {
return err
}
u.UUID = uuid // restore field
return nil
}
Run Code Online (Sandbox Code Playgroud)
请注意,有第三方库用于将映射映射到struts值(例如github.com/mitchellh/mapstructure),但首先解组到映射中,然后将其映射到结构中要比解组结构值和存储/恢复单个字段要慢得多.