golang中json序列化和反序列化的一个问题,感觉很奇怪

type slisli struct {
    a float64 `json:"a"`
    b float64 `json:"b"`
    c string `json:"c"`
}
type Message struct {
    Name string `json:"msg_name"`      
    Body string `json:"body,omitempty"` //该字段为空则忽略
    Age  int       `json:"age"`
    Sli  []slisli  `json:"sli"`
}

func main(){
    var me Message
    var me2 Messag
    e
    ssll1:=slisli{0.5,0.5,"aaaa"}
    ssll2:=slisli{1.1,1.1,"bbbb"}
    ssll3:=slisli{6.6,6.6,"cccc"}
    ssll4:=slisli{7.7,7.7,"dddd"}

    var sll=[]slisli{ssll1,ssll2}
    me = Message{
        Name: "aaa",
        Body: "",
        Age:12,
        Sli: sll,
    }
    d, Rrr := json.Marshal(me)
    Rrr =json.Unmarshal(d,&me2)
    fmt.Println(me2)
}

为什么打印结果是{aaa 12 [{0 0 } {0 0 }]} ???

已邀请:

曹涛

赞同来自: tupunco ddxx11223 singlethread

变量小写的不导出

kekemuyu - 简单就好

赞同来自: ddxx11223

type slisli struct {
    a float64 `json:"a"`
    b float64 `json:"b"`
    c string `json:"c"`
}

a,b,c改为大写

tupunco

赞同来自:

认真阅读 Go 代码规范, 搞 序列化/反序列化 清楚原理. 没错问题就是 私有字段 无法在 外部包 内被访问到.

要回复问题请先登录注册