开发者

深入浅出Go语言:手把手教你高效生成与解析JSON数据

目录
  • 一、jsON解析到结构体
    • 1.JSON名称/值对
    • 2.JSON值
    • 3.JSON数据
    • 4.JSON对象编程
    • 5.JSON数组
    • 6.JSON布尔值
    • 7.JSON null
  • Json解析到结构体
    • 二、JSON转map
      • 三、生成JSON

        一、JSON解析到结构体

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

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

        数据在名称/值对中

        数据由逗号分隔

        大括号保存对象

        中括号保存数组

        1.JSON名称/值对

        "name" : "value"

        2.JSON值

        可以是:

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

        3.JSON数据

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

        { "age":30 }

        4.JSON对象

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

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

        {
            "name": "runoob",
            "alexa": 10000,
            "sites": {
                "site1": "www.runwww.devze.comoob.com",
                "site2": "m.runoob.com",
                "site3": "c.runoob.com"
            }
        }

        5.JSON数组

        JSON 数组在中括号中书写:

        数组可包含多个对象:

        {
            "sites": [
                {
                    "name": "菜鸟教程",
                    "url": "www.runoob.com"
                },
                {
                    "name": "google",
                    "url": "www.google.com"
                },
                {
                    "name": "微博",
                    "url": "www.weibo.com"
                }
            ]
        }

        6.JSON布尔值

        { "flag":true }

        7.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.1dCANxCj", "name": "SKY"}`)http://www.devze.com
         
            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 = appehttp://www.devze.comnd(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))
        }

        到此这篇关于深入浅出Go语言:手把手教你高效生成与解析JSON数据的文章就介绍到这了,更多相关golang生成JSON及解析JSON内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

        0

        上一篇:

        下一篇:

        精彩评论

        暂无评论...
        验证码 换一张
        取 消

        最新开发

        开发排行榜