首页 > 解决方案 > json.Marshal 可以从方法中获取字段的值吗?

问题描述

例如,如果我们有这样的结构:

type device struct {
       Name string
       Online bool
}

func (device) online() bool {
     return true
}

当我调用此结构的实例时,我希望该字段的值Online来自该方法。online()json.Mashal

标签: go

解决方案


是的,您可以,但您必须编写自己的MarshalJSON实现:

func (d device) MarshalJSON() ([]byte, error) {
    return json.Marshal(map[string]interface{}{
        "Name": d.Name,
        "Online": d.online(),
    })
}

游乐场链接


推荐阅读