go - json.Marshal 可以从方法中获取字段的值吗?
问题描述
例如,如果我们有这样的结构:
type device struct {
Name string
Online bool
}
func (device) online() bool {
return true
}
当我调用此结构的实例时,我希望该字段的值Online
来自该方法。online()
json.Mashal
解决方案
是的,您可以,但您必须编写自己的MarshalJSON
实现:
func (d device) MarshalJSON() ([]byte, error) {
return json.Marshal(map[string]interface{}{
"Name": d.Name,
"Online": d.online(),
})
}
推荐阅读
- c# - 如何使用 Magick.net 合成两个图像
- amazon-web-services - 选择特定实例以在 AWS 中扩展和扩展
- php - What does `$protected dates` accomplish in Eloquent models
- c# - uwp: desktop app, using "not allowed" APIs for app that will NOT be deployed via MS store. Does it work?
- mysql - Marshaling mysql string column that contains json string to object in groovy
- c# - How to validate email address in c# console application?
- android - 持续服务
- json - How to read a json to a pandas MultiIndex Dataframe?
- windows - Windows 10 升级后 URL 在安全级别被阻止
- azure - Storage destination needs to have a Service SAS, not an Account SAS. What Does This Mean?