首頁  >  文章  >  後端開發  >  golang如何產生JSON及解析JSON

golang如何產生JSON及解析JSON

藏色散人
藏色散人轉載
2020-11-10 14:43:513755瀏覽

以下由golang#教學欄位介紹給大家golang產生JSON及解析JSON,希望對需要的朋友有幫助!

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.net。如有侵權,請聯絡admin@php.cn刪除