
golang json浅析
发布日期:2021-05-10 23:13:05
浏览次数:15
分类:精选文章
本文共 3281 字,大约阅读时间需要 10 分钟。
JSON常用方法示例
package main import ( "encoding/json" "fmt" "os" "time" ) type info struct { Name string `json:"name"` Age int `json:"age"` Extra interface{} `json:"extra"` } // JSON Unmarshal 将字符串解析为对应的结构体 func testUnmarshal() { str := `{"name": "code-machine", "age": 18, "extra": {"phoneNumber": "8008208820", "hobby": ["LOL", "CF", "CS", "CSGO"]}}` var s info if err := json.Unmarshal([]byte(str), &s); err != nil { panic(err) } fmt.Println(s.Name) fmt.Println(s.Age) fmt.Println(s.Extra) } // JSON Marshal 将结构体解析为[]byte func testMarshal() { type extra struct { PhoneNumber string `json:"phoneNumber"` Hobby []string `json:"hobby"` } e := extra{ PhoneNumber: "8008208820", Hobby: []string{"LOL", "CF", "CS", "CSGO"}, } s := &info{ Name: "code-machine", Age: 18, Extra: e, } ret, err := json.Marshal(s) if err != nil { panic(err) } fmt.Println(string(ret)) } // 从io.Reader中读取内容并解析为对应的结构体 func testDecode() { type moreInfo struct { Address string `json:"address"` Job string `json:"job"` } f, err := os.Open("./test-file") if err != nil { panic(err) } defer f.Close() s := &info{} d := json.NewDecoder(f) if err := d.Decode(s); err != nil { panic(err) } fmt.Println(s) remainder := d.Buffered() more := &moreInfo{} b := make([]byte, 100) n, err := remainder.Read(b) if err != nil { panic(err) } fmt.Println(string(b)) if err := json.Unmarshal(b[:n], more); err != nil { panic(err) } fmt.Println(more) } // 将结构体解析为字符串后写入io.Writer func testEncode() { type encode struct { Time int64 `json:"time"` Context string `json:"context"` } f, err := os.OpenFile("./test-file", os.O_APPEND, os.ModeAppend) if err != nil { panic(err) } e := json.NewEncoder(f) s := &encode{ Time: time.Now().Unix(), Context: "test json", } if err := e.Encode(s); err != nil { panic(err) } } func main() { //testUnmarshal() //testMarshal() //testDecode() testEncode() }
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年04月13日 10时50分46秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
git远程仓库切换
2019-03-14
带照片捕捉功能的ESP32-CAM PIR运动检测器
2019-03-15
如何使用SSH远程管理Linux服务器
2019-03-15
降级到旧版本macOS的3种方法
2019-03-15
学习Vue.js2.0(国外视频教程)
2019-03-15
wxPython和PyOpenGL视频
2019-03-15
在30分钟内学习PHP
2019-03-15
Python http.server 服务器
2019-03-15
Python svm 支持向量机
2019-03-15
OpenStack 最小化安装配置(一):物理机网桥配置
2019-03-15
PS快速美白照片
2019-03-15
ubuntu 16.04 镜像下载
2019-03-15
CUDA9.1、cuDNN7在Ubuntu16.04上的安装
2019-03-15
微信小程序云开发:怎么删除云函数?已解决
2019-03-15
第一次被黑
2019-03-15
PyCharm配置anaconda环境
2019-03-15