首页后端开发其他后端知识golang是如何生成JSON和解析JSON的,方法是什么?

golang是如何生成JSON和解析JSON的,方法是什么?

时间2024-03-27 06:42:03发布访客分类其他后端知识浏览635
导读:在这篇文章中我们会学习到关于“golang是如何生成JSON和解析JSON的,方法是什么?”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。 下面由gol...
在这篇文章中我们会学习到关于“golang是如何生成JSON和解析JSON的,方法是什么?”的知识,小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望对大家学习或工作能有帮助。下面就请大家跟着小编的思路一起来学习一下吧。
 

下面由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的,方法是什么?”的内容了,通过以上内容的阐述,相信大家对golang是如何生成JSON和解析JSON的,方法是什么?已经有了进一步的了解,如果想要了解更多相关的内容,欢迎关注网络,网络将为大家推送更多相关知识点的文章。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

golang

若转载请注明出处: golang是如何生成JSON和解析JSON的,方法是什么?
本文地址: https://pptw.com/jishu/654046.html
HTML5浏览器和audio音频格式兼容性问题怎么解决 Golang中函数作为值与类型是怎样,怎么实现

游客 回复需填写必要信息