本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
golang生成JSON及解析JSON
iamitnan · 458浏览 · 发布于2020-12-15 +关注

一、JSON解析到结构体

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

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

数据在名称/值对中

数据由逗号分隔

大括号保存对象

中括号保存数组

1.JSON名称/值对

"name" : "value"

2.JSON值

可以是:

数字(整数或浮点数)

字符串(在双引号中)

逻辑值(true 或 false)

数组(在中括号中)

对象(在大括号中)

null

JSON数据

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

{ "age":30 }

JSON对象

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

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

{

"name": "runoob",

"alexa": 10000,

"sites": {

"site1": "www.662p.com",

"site2": "m.662p.com",

"site3": "c.662p.com"

}

}

JSON数组

JSON 数组在中括号中书写:

数组可包含多个对象:

{

"sites": [

{

"name": "662P",

"url": "www.662p.com"

},

{

"name": "google",

"url": "www.google.com"

},

{

"name": "微博",

"url": "www.weibo.com"

}

]

}

JSON布尔值

{ "flag":true }

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))

}


相关推荐

PHP实现部分字符隐藏

沙雕mars · 1325浏览 · 2019-04-28 09:47:56
Java中ArrayList和LinkedList区别

kenrry1992 · 908浏览 · 2019-05-08 21:14:54
Tomcat 下载及安装配置

manongba · 970浏览 · 2019-05-13 21:03:56
JAVA变量介绍

manongba · 962浏览 · 2019-05-13 21:05:52
什么是SpringBoot

iamitnan · 1086浏览 · 2019-05-14 22:20:36
加载中

0评论

评论
分类专栏
小鸟云服务器
扫码进入手机网页