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

ddxx11223 · 2017-11-11 17:14:52 · 1555 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-11-11 17:14:52 的主题,其中的信息可能已经有所发展或是发生改变。


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 }]} ???


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1555 次点击  
加入收藏 微博
4 回复  |  直到 2017-11-12 09:15:54
tk103331
tk103331 · #1 · 7年之前

fmt.Println()方法输出格式就是这样的,而不是json格式。 可以看下fmt包的说明

http://docs.studygolang.com/pkg/fmt/#Println

gogeof
gogeof · #2 · 7年之前

@ddxx11223 不明白你是要说啥,如果真像1楼说的,要输出json格式的,你打印一下序列化后的字符串就可以得到:

fmt.Printf("%s\n", string(d))
fyqtian
fyqtian · #3 · 7年之前

导出字段要大写

ddxx11223
ddxx11223 · #4 · 7年之前
fyqtianfyqtian #3 回复

导出字段要大写

是的,谢谢,自己犯傻了。。。

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传