go encoding/json 介绍

曹飞龙 · · 630 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

由于我一直是一名前端工程师,所以我会在前端的角度将js中的json操作和go中的操作做一个类比方便大家的理解。

将字符串转换为对象

js : JSON.parse(`{"name":"cfl"}`)
go : json.Unmarshal

jsonStr := `{
         "name":"cfl",
        "age":10,
        "friend":[{"name":"sx",
            "age":10
        }]
    }`
    type User struct {
        Name   string
        Age    int64
        Friend []User
    }
    var cfl User
    json.Unmarshal([]byte(jsonStr), &cfl)
    fmt.Printf("%+v", cfl)

将对象转换为json

js: JSON.stringify
go: json.Marshal

type User struct {
        Name   string
        Age    int64
        Friend []User
    }
    cfl := User{
        Name: "cfl",
        Age:  10,
        Friend: []User{
            {Name: "sx", Age: 10},
        },
    }

    jsonStr, _ := json.Marshal(cfl)
    fmt.Printf("%v\n", string(jsonStr))

其他的常用方法

json.Valid(byte[]) //校验json字符串是否合法
json.Indent  //按照一定的格式缩进 
json.Compact  //压缩
json.MarshalIndent //转换回带缩进的json字符串

参考资料 encoding/jso


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

本文来自:Segmentfault

感谢作者:曹飞龙

查看原文:go encoding/json 介绍

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

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