• 技术文章 >后端开发 >Golang

    golang如何生成JSON及解析JSON

    藏色散人藏色散人2020-11-10 14:43:51转载578

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

    一、JSON解析到结构体

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

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

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

    "name" : "value"

    2.JSON值
    可以是:

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

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

    { "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的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:golang
    上一篇:详解 Golang 通道 Chan 下一篇:详解Golang中函数作为值与类型
    大前端线上培训班

    相关文章推荐

    • Golang如何对excel进行处理• 当Golang遇到高并发秒杀~• 关于Golang 指针理解• 详解 Golang 通道 Chan

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网