欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Golang實(shí)現(xiàn)Json轉(zhuǎn)結(jié)構(gòu)體的示例詳解

 更新時(shí)間:2023年02月19日 15:21:04   作者:TtrOps  
這篇文章主要為大家詳細(xì)介紹了Golang實(shí)現(xiàn)Json轉(zhuǎn)結(jié)構(gòu)體的方法,文中的示例代碼講解詳細(xì),對(duì)學(xué)習(xí)Go語(yǔ)言有一定的幫助,需要的可以參考一下

解決實(shí)際需求,案例分享。

1.請(qǐng)求Zabbix API,通過(guò)itemid獲取到AppName(應(yīng)用集名稱)

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

響應(yīng)結(jié)果:

{"jsonrpc":"2.0","result":[{"applicationid":"1574","hostid":"10354","name":"TEST","flags":"0","templateids":[]}],"id":2}

2.將響應(yīng)結(jié)果(json)轉(zhuǎn)結(jié)構(gòu)體,方便取值

在原來(lái)代碼的基礎(chǔ)上,繼續(xù)編碼。

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

結(jié)果:

TEST

3.來(lái)自最好的總結(jié)

人生苦短,建議你還是用python吧!

到此這篇關(guān)于Golang實(shí)現(xiàn)Json轉(zhuǎn)結(jié)構(gòu)體的示例詳解的文章就介紹到這了,更多相關(guān)Golang Json轉(zhuǎn)結(jié)構(gòu)體內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go 實(shí)現(xiàn)基于Token 的登錄流程深度分析

    Go 實(shí)現(xiàn)基于Token 的登錄流程深度分析

    Token 認(rèn)證機(jī)制的核心思想是,服務(wù)端在用戶登錄時(shí)生成一個(gè) Token,客戶端在后續(xù)的請(qǐng)求中攜帶這個(gè) Token,服務(wù)端通過(guò)驗(yàn)證 Token 的有效性來(lái)確認(rèn)用戶的身份,本文將帶你深入探索基于 Token 的登錄流程,這是一種更為靈活且適用于現(xiàn)代應(yīng)用架構(gòu)的認(rèn)證方式
    2024-03-03
  • 詳解Go中g(shù)in框架如何實(shí)現(xiàn)帶顏色日志

    詳解Go中g(shù)in框架如何實(shí)現(xiàn)帶顏色日志

    當(dāng)我們?cè)诮K端上(比如Goland)運(yùn)行g(shù)in框架搭建的服務(wù)時(shí),會(huì)發(fā)現(xiàn)輸出的日志是可以帶顏色的,那這是如何實(shí)現(xiàn)的呢?本文就來(lái)和大家簡(jiǎn)單講講
    2023-04-04
  • golang?中?recover()的使用方法

    golang?中?recover()的使用方法

    這篇文章主要介紹了Guam與golang??recover()的使用方法,Recover?是一個(gè)Go語(yǔ)言的內(nèi)建函數(shù),可以讓進(jìn)入宕機(jī)流程中的?goroutine?恢復(fù)過(guò)來(lái),下文更多相關(guān)資料需要的小伙伴可以參考一下
    2022-04-04
  • Go語(yǔ)言設(shè)計(jì)模式之實(shí)現(xiàn)觀察者模式解決代碼臃腫

    Go語(yǔ)言設(shè)計(jì)模式之實(shí)現(xiàn)觀察者模式解決代碼臃腫

    今天學(xué)習(xí)一下用?Go?實(shí)現(xiàn)觀察者模式,觀察者模式主要是用來(lái)實(shí)現(xiàn)事件驅(qū)動(dòng)編程。事件驅(qū)動(dòng)編程的應(yīng)用還是挺廣的,除了我們都知道的能夠用來(lái)解耦:用戶修改密碼后,給用戶發(fā)短信進(jìn)行風(fēng)險(xiǎn)提示之類的典型場(chǎng)景,在微服務(wù)架構(gòu)實(shí)現(xiàn)最終一致性、實(shí)現(xiàn)事件源A?+?ES
    2022-08-08
  • Golang中的http.Server源碼深入分析

    Golang中的http.Server源碼深入分析

    這篇文章主要介紹了Golang中的http.Server源碼,實(shí)現(xiàn)一個(gè)http.Server非常容易,只需要短短幾行代碼,同時(shí)有了協(xié)程的加持,Go實(shí)現(xiàn)的http.Server能夠取得非常優(yōu)秀的性能,下面我們來(lái)分析看看http.Server的源碼
    2023-05-05
  • grpool?goroutine池協(xié)程管理

    grpool?goroutine池協(xié)程管理

    這篇文章主要介紹了grpool?goroutine池協(xié)程管理,goroutine協(xié)程非常輕量級(jí),這也是為什么go支持高并發(fā),但是goroutine頻繁創(chuàng)建銷毀對(duì)GC的壓力比較大,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-06-06
  • 淺析go語(yǔ)言如何實(shí)現(xiàn)協(xié)程的搶占式調(diào)度的

    淺析go語(yǔ)言如何實(shí)現(xiàn)協(xié)程的搶占式調(diào)度的

    go語(yǔ)言通過(guò)GMP模型實(shí)現(xiàn)協(xié)程并發(fā),為了避免單協(xié)程持續(xù)持有線程導(dǎo)致線程隊(duì)列中的其他協(xié)程饑餓問(wèn)題,設(shè)計(jì)者提出了一個(gè)搶占式調(diào)度機(jī)制,本文會(huì)基于一個(gè)簡(jiǎn)單的代碼示例對(duì)搶占式調(diào)度過(guò)程進(jìn)行深入講解剖析
    2024-04-04
  • 讓GPT教你用go語(yǔ)言和C語(yǔ)言開(kāi)發(fā)IDE配置學(xué)習(xí)

    讓GPT教你用go語(yǔ)言和C語(yǔ)言開(kāi)發(fā)IDE配置學(xué)習(xí)

    這篇文章主要介紹了讓GPT教你用go語(yǔ)言和C語(yǔ)言開(kāi)發(fā)IDE配置學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • go語(yǔ)言實(shí)現(xiàn)接口查詢

    go語(yǔ)言實(shí)現(xiàn)接口查詢

    這篇文章主要介紹了go語(yǔ)言實(shí)現(xiàn)接口查詢,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Go Generate 代替 Makefile使用方法詳解

    Go Generate 代替 Makefile使用方法詳解

    這篇文章主要為大家介紹了Go Generate 代替 Makefile使用方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評(píng)論