开发者

golang生成JSON以及解析JSON

目录
    开发者_JS教程
  • 一、jsON解析到结构体
    • 1.JSON名称/值对
    • 2.JSON值
    • 3.JSON数据
    • 4.JSON对象
    • 5.JSON数组
    • 6.JSON布尔值
    • 7.JSON null
  • 二、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.runoob.com",
          "site2": "m.runoob.com",
          "site3": "c.runoob.com"
        }
      }

      5.JSON数组

      JSON 数组在中括号中书写:

      数组可包含多个对象:

      {
        "sites": [
          {
            "name": "菜鸟教程",
            "url": "www.runoob.com"
          },
       android   {
            "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":"12http://www.devze.com7.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("Umarshaljs failed:", err)
          return
        }
      
        fmt.Prin编程客栈tln("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))
      }

      以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

      0

      上一篇:

      下一篇:

      精彩评论

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

      最新开发

      开发排行榜