想象一下:
type Ninja struct {
name string
}
func (n *Ninja) Shurikens() int {
return 2
}
n := &Ninja{"Super Ninja"}
Run Code Online (Sandbox Code Playgroud)
我想将其序列化为JSON,并获得以下内容:
{'Name': 'Super Ninja', 'Shurikens':2}
Run Code Online (Sandbox Code Playgroud)
它只是我需要的简化(在结构上调用方法,并在结果JSON中包含该输出).
简短的回答,你不能,你Shurikens必须是一个领域.
长的答案,那么,你可以使用自定义MarshalJSON像这样:
func (n *Ninja) MarshalJSON() ([]byte, error) {
return []byte(fmt.Sprintf(`{"Name":"%s", "Shurikens":%d}`, n.name, n.Shurikens())), nil
}
func main() {
n := []*Ninja{{"X"}, {"Y"}}
b, err := json.Marshal(n)
fmt.Println(string(b), err)
}
Run Code Online (Sandbox Code Playgroud)
请记住,您的name字段未导出,因为它不以大写字母开头,因此您将无法解组您的结构.
| 归档时间: |
|
| 查看次数: |
34 次 |
| 最近记录: |