美文网首页
golang生成JSON及解析JSON

golang生成JSON及解析JSON

作者: 也许会了 | 来源:发表于2020-12-14 17:59 被阅读0次

    一、JSON解析到结构体

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

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

    数据在名称/值对中

    数据由逗号分隔

    大括号保存对象

    中括号保存数组

    1.JSON名称/值对

    "name" : "value"

    2.JSON值

    可以是:

    数字(整数或浮点数)

    字符串(在双引号中)

    逻辑值(true 或 false)

    数组(在中括号中)

    对象(在大括号中)

    null

    JSON数据

    JSON 数字可以是整型或者浮点型

    { "age":30 }

    JSON对象

    JSON 对象在大括号({})中书写:

    对象可以包含多个名称/值对:

    {

    "name": "runoob",

    "alexa": 10000,

    "sites": {

    "site1": "www.runoob.com",

    "site2": "m.runoob.com",

    "site3": "c.runoob.com"

    }

    }

    JSON数组

    JSON 数组在中括号中书写:

    数组可包含多个对象:

    {

    "sites": [

    {

    "name": "菜鸟教程",

    "url": "www.runoob.com"

    },

    {

    "name": "google",

    "url": "www.google.com"

    },

    {

    "name": "微博",

    "url": "www.weibo.com"

    }

    ]

    }

    JSON布尔值

    { "flag":true }

    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))

    }

    本文来自php中文网的golang教程栏目:https://www.php.cn/be/go/

    相关文章

      网友评论

          本文标题:golang生成JSON及解析JSON

          本文链接:https://www.haomeiwen.com/subject/yffbgktx.html