下面由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 mainimport (    "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 mainimport (    "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))}

更多相关文章

  1. 详解Golang数组的传递
  2. go语言中数组和切片的区别是什么?
  3. go语言如何实现字符串转数组
  4. go语言定义一个数组的方法有哪些
  5. 数组的认识
  6. 一篇文章完全掌握 JavaScript 数组操作[每日前端夜话0x87]
  7. JavaScript算法题:查找数字在数组中的索引[每日前端夜话0x69]
  8. 学习C的第三天-数组
  9. 如何删除 JavaScript 数组中的虚值[每日前端夜话0x55]

随机推荐

  1. Android-安全退出
  2. android中shape的属性
  3. android兼容oppo手机刘海屏解决方案
  4. 详解Android AM命令
  5. Android学习之 使用依赖注入函数库Robogu
  6. android install
  7. Android 中插件的编写方法
  8. android开发之布局常用属性
  9. 安卓中RelativeLayout布局
  10. Android异步处理一:使用Thread+Handler实