doumei1926 2016-11-17 07:57
浏览 79

将结构转换为JSON,其中字段是另一个结构

I have two structs struct:

type A struct {
    Zip string `json:"zip"`
}

type B struct {
    Foo string `bson:"foo"`
    Bar A      `json:"bar"`
}

When I try to json.Marshal the B type, the Bar field does not get converted correctly. The fields are OK, but the values are always empty. The output looks like this:

{"foo": "some-string-value", "bar": {"zip": ""}}

What am I doing wrong?

  • 写回答

1条回答 默认 最新

  • doubi7496 2016-11-17 08:44
    关注

    Your Zip field in A is not populated.

    type A struct {
        Zip string `json:"zip"`
    }
    
    type B struct {
        Foo string `bson:"foo"`
        Bar A      `json:"bar"`
    } 
    func main() {
        one := A{"35000"}
        two := B{"Foo", one}
        json, _ := json.Marshal(two)
        fmt.Printf("%s
    ", json)
    }
    

    Output is (https://play.golang.org/p/kyG1YabpSe):

    {"Foo":"Foo","bar":{"zip":"35000"}}
    

    Even with a map

    type A struct {
       Zip string `json:"zip"`
    }
    type B struct {
       Foo string `bson:"foo"`
       Bar A      `json:"bar"`
    }
    func main() {
       m := make(map[string]B)
    
       for x := 0; x < 10; x++ {
          m[strconv.Itoa(x)] = B{"Hello", A{"35000"}}
       }
    
       json, _ := json.Marshal(m)
       fmt.Printf("%s
    ", json)
    }
    

    https://play.golang.org/p/qCsmAGzo4H

    Output is good, i don't understand where you are wrong.

    评论

报告相同问题?

悬赏问题

  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器