阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

简单介绍Golang实现Json转结构体的方法

307次阅读
没有评论

共计 2331 个字符,预计需要花费 6 分钟才能阅读完成。

导读 这篇文章主要为大家详细介绍了 Golang 实现 Json 转结构体的方法,文中的示例代码讲解详细,对学习 Go 语言有一定的帮助,需要的可以参考一下
解决实际需求,案例分享。
1. 请求 Zabbix API,通过 itemid 获取到 AppName(应用集名称)
package main
 
import (
 "encoding/json"
 "fmt"
 "io/ioutil"
 "log"
 "net/http"
 "strings"
)
 
func PostRequest(payload string, url string) {
 method := "POST"
 pl := strings.NewReader(payload)
 client := &http.Client{}
 req, err := http.NewRequest(method, url, pl)
 
 if err != nil {fmt.Println(err)
  return
 }
 req.Header.Add("Content-Type", "application/json")
 
 res, err := client.Do(req)
 if err != nil {fmt.Println(err)
  return
 }
 defer res.Body.Close()
 
 body, err := ioutil.ReadAll(res.Body)
 
 if err != nil {log.Println(err)
  return
 }
 fmt.Println(string(body))
}
 
func main() {
 const api = "http://192.168.11.11:28080/api_jsonrpc.php"
 const token = "a638200c24a8bea7f78cd5cabf3d1dd5"
 const itemid = "33918"
 
 a := fmt.Sprintf(`{
  "jsonrpc": "2.0",
  "method": "application.get",
  "params": {"itemids": "%s"},
  "auth": "%s","id": 2
  }`, itemid, token)
 
 PostRequest(a, api)
}

响应结果:

{"jsonrpc":"2.0","result":[{"applicationid":"1574","hostid":"10354","name":"TEST","flags":"0","templateids":[]}],"id":2}
2. 将响应结果(json)转结构体,方便取值

在原来代码的基础上,继续编码。

package main
 
import (
 "encoding/json"
 "fmt"
 "io/ioutil"
 "log"
 "net/http"
 "strings"
)
 
type resultInfo struct {
 Applicationid string   `json:"applicationid"`
 Hostid        string   `json:"hostid"`
 Name          string   `json:"name"`
 Flags         string   `json:"flags"`
 Templateids   []string `json:"templateids"`}
 
type resultArr []resultInfo
 
type Response struct {
 Jsonrpc string    `json:"jsonrpc"`
 Result  resultArr `json:result`
 Id      int       `json:"id"`
}
 
type Byte []byte
 
func JsonConvertStruct(body Byte) {
 var response Response
 json.Unmarshal([]byte(body), &response)
 fmt.Println(response.Result[0].Name)
}
 
func PostRequest(payload string, url string) {
 method := "POST"
 pl := strings.NewReader(payload)
 client := &http.Client{}
 req, err := http.NewRequest(method, url, pl)
 
 if err != nil {fmt.Println(err)
  return
 }
 req.Header.Add("Content-Type", "application/json")
 
 res, err := client.Do(req)
 if err != nil {fmt.Println(err)
  return
 }
 defer res.Body.Close()
 
 body, err := ioutil.ReadAll(res.Body)
 
 if err != nil {log.Println(err)
  return
 }
 JsonConvertStruct(body)
}
 
func main() {
 const api = "http://192.168.11.11:28080/api_jsonrpc.php"
 const token = "a638200c24a8bea7f78cd5cabf3d1dd5"
 const itemid = "33918"
 
 a := fmt.Sprintf(`{
  "jsonrpc": "2.0",
  "method": "application.get",
  "params": {"itemids": "%s"},
  "auth": "%s","id": 2
  }`, itemid, token)
 
 PostRequest(a, api)
}

结果:

TEST
3. 来自最好的总结

人生苦短,建议你还是用 python 吧!

到此这篇关于 Golang 实现 Json 转结构体的示例详解的文章就介绍到这了

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2331字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19352
评论数
4
阅读量
8056267
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
欧洲无限速云盘免费10GB永久存储 + WebDAV部署+图床搭建,多平台联动一步到位!

欧洲无限速云盘免费10GB永久存储 + WebDAV部署+图床搭建,多平台联动一步到位!

欧洲无限速云盘免费 10GB 永久存储 + WebDAV 部署 + 图床搭建,多平台联动一步到位! 大家好,我...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛NAS-2:飞牛配置RAID磁盘阵列

星哥带你玩飞牛 NAS-2:飞牛配置 RAID 磁盘阵列 前言 大家好,我是星哥之前星哥写了《星哥带你玩飞牛 ...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地

把小米云笔记搬回家:飞牛 NAS 一键部署,小米云笔记自动同步到本地 大家好,我是星哥,今天教大家在飞牛 NA...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...