doupo5861 2017-07-23 08:32
浏览 43
已采纳

嵌入struct但在json中仅包含某些字段

I have a struct that I want to embed but want to json encode only certain fields of that struct (and lowercase them). Is that possible?

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"}
}
  • 写回答

1条回答 默认 最新

  • dp198879 2017-07-23 08:55
    关注

    Expanding my comment with example.

    It is feasible, you have to implement Marshal interface.

    For example:

    func (u *MyStruct) MarshalJSON() ([]byte, error) {
        return json.Marshal(&struct {
            Name   string `json:"name"`
            Scheme string `json:"scheme"`
        }{
            Name:   u.Name,
            Scheme: u.Scheme,
        })
    }
    

    Play Link: https://play.golang.org/p/LLchuOdYvf

    Output:

    {"name":"Bob","scheme":"http"}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部