我有一个我想要嵌入的结构但想要json只编码该结构的某些字段(并将它们小写)。这可能吗?
https://play.golang.org/p/bEC4zlx2oC:
package main
import (
"encoding/json"
"fmt"
"net/url"
)
type MyStruct struct {
Name string `json:"name"`
*url.URL
}
func main() {
m := &MyStruct{
"Bob",
&url.URL{
Scheme: "http",
},
}
j, err := json.Marshal(m)
if err != nil {
fmt.Println(err)
}
fmt.Println(string(j)) // want {"name":"Bob","scheme":"http"}
}
答案 0 :(得分:3)
以示例扩展我的评论。
这是可行的,你必须实现Marshal接口。
例如:
func (u *MyStruct) MarshalJSON() ([]byte, error) {
return json.Marshal(&struct {
Name string `json:"name"`
Scheme string `json:"scheme"`
}{
Name: u.Name,
Scheme: u.Scheme,
})
}
播放链接:https://play.golang.org/p/LLchuOdYvf
输出:
{"name":"Bob","scheme":"http"}