简化示例假设我有一个用于解组一些 json 的结构:type DataEntry struct { FirstName string `json:"first"` LastName string `json:"last"` FullName string}我想填充该FullName属性的内容是FirstName + LastName.我目前正在做的是为 DataEntry 定义一个方法,它执行以下类型的计算:func (de *DataEntry) Compute() { de.FullName = de.FirstName + " " + de.LastName}并在从 JSON 填充结构体后调用 if:// Grab datarequest, _ := http.Get("http://........")var entry DataEntrydec := json.NewDecoder(request.Body)dec.Decode(&entry)// Compute the computed fieldsentry.Compute()有一个更好的方法吗?我可以使用 create my ownUnmarshalJSON并将其用作触发器来自动计算该FullName字段吗?
1 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
在这种情况下,我只会FullName变成一种方法。但是,如果您真的需要这样做,只需创建一个包装器类型,它也是json.Unmarshaler:
type DataEntryForJSON DataEntry
func (d *DataEntryForJSON) UnmarshalJSON(b []byte) error {
if err := json.Unmarshal(b, (*DataEntry)(d)); err != nil {
return err
}
d.FullName = d.FirstName + " " + d.LastName
return nil
}
游乐场:http : //play.golang.org/p/g9BnytB5DG。
- 1 回答
- 0 关注
- 212 浏览
添加回答
举报
0/150
提交
取消