doupo5861 2017-07-23 16: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 16: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"}
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。