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 代码规范, 搞 序列化/反序列化 清楚原理.
没错问题就是 私有字段 无法在 外部包 内被访问到.

要回复问题请先登录注册