golang如何生成JSON及解析JSON

互联网 20-11-10

下面由golang教程栏目给大家介绍golang生成JSON及解析JSON,希望对需要的朋友有所帮助!

一、JSON解析到结构体

在介绍这部分之前先简要介绍一下Json语法

JSON 语法是 JavaScript 语法的子集。JSON 语法是 JavaScript 对象表示法语法的子集。

数据在名称/值对中 数据由逗号分隔 大括号保存对象 中括号保存数组 1.JSON名称/值对

"name" : "value"

数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在中括号中) 对象(在大括号中) null

    { "age":30 }

    1. JSON对象 JSON 对象在大括号({})中书写: 对象可以包含多个名称/值对:
    {     "name": "runoob",     "alexa": 10000,     "sites": {         "site1": "www.runoob.com",         "site2": "m.runoob.com",         "site3": "c.runoob.com"     } }
    1. JSON数组 JSON 数组在中括号中书写: 数组可包含多个对象:
    {     "sites": [         {             "name": "菜鸟教程",             "url": "www.runoob.com"         },         {             "name": "google",             "url": "www.google.com"         },         {             "name": "微博",             "url": "www.weibo.com"         }     ] }
    1. JSON布尔值

    { "flag":true }

    1. JSON null

    { "runoob":null }

    Json解析到结构体

    //JSON解析到结构体 package main import (     "encoding/json"     "fmt"     "os" ) type Server struct {     ServerName string     ServerIP   string } type Serverslice struct {     Servers []Server } func main() {     var s Serverslice     str := `{"servers":    [{"serverName":"Guangzhou_Base","serverIP":"127.0.0.1"},    {"serverName":"Beijing_Base","serverIP":"127.0.0.2"}]}`     err:=json.Unmarshal([]byte(str), &s)     if err!=nil{         fmt.Println(err)     }     fmt.Println(s)     fmt.Println(s.Servers[0].ServerName) }

    二、JSON转map

    package main     import (     "fmt"     "encoding/json" )   func main() {       b := []byte(`{"IP": "127.0.0.1", "name": "SKY"}`)       m := make(map[string]string)       err := json.Unmarshal(b, &m)     if err != nil {           fmt.Println("Umarshal failed:", err)         return     }         fmt.Println("m:", m)       for k,v :=range m {         fmt.Println(k, ":", v)     } }

    输出结果:

    m: map[IP:127.0.0.1 name:SKY] name : SKY IP : 127.0.0.1

    三、生成JSON

    package main import (     "encoding/json"     "fmt" ) type Server struct {     ServerName string `json:"serverName,string"`     ServerIP   string `json:"serverIP,omitempty"` } type Serverslice struct {     Servers []Server `json:"servers"` } func main() {     var s Serverslice     s.Servers = append(s.Servers, Server{ServerName: "Guangzhou_Base", ServerIP: "127.0.0.1"})     s.Servers = append(s.Servers, Server{ServerName: "Beijing_Base", ServerIP: "127.0.02"})     b, err := json.Marshal(s)     if err != nil {         fmt.Println("JSON ERR:", err)     }     fmt.Println(string(b)) }

    以上就是golang如何生成JSON及解析JSON的详细内容,更多内容请关注技术你好其它相关文章!

    来源链接:
    免责声明:
    1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
    2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
    标签: golang
    上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:详解 Golang 通道 Chan

    相关资讯