最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

解決實際需求,案例分享。

1.請求Zabbix API,通過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)體,方便取值

在原來代碼的基礎(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.來自最好的總結(jié)

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

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

相關(guān)文章

  • golang如何優(yōu)雅的編寫事務(wù)代碼示例

    golang如何優(yōu)雅的編寫事務(wù)代碼示例

    這篇文章主要介紹了golang如何優(yōu)雅的編寫事務(wù)代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • Go語言基礎(chǔ)go接口用法示例詳解

    Go語言基礎(chǔ)go接口用法示例詳解

    這篇文章主要為大家介紹了Go語言基礎(chǔ)關(guān)于go接口的用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,在日升職加薪
    2021-11-11
  • Golang教程之不可重入函數(shù)的實現(xiàn)方法

    Golang教程之不可重入函數(shù)的實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Golang教程之不可重入函數(shù)的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • go語言匿名函數(shù)的使用

    go語言匿名函數(shù)的使用

    今天小編就為大家分享一篇關(guān)于go語言匿名函數(shù)的使用,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • VS Code配置Go語言開發(fā)環(huán)境的詳細教程

    VS Code配置Go語言開發(fā)環(huán)境的詳細教程

    這篇文章主要介紹了VS Code配置Go語言開發(fā)環(huán)境的詳細教程,本文通過實例代碼圖文相結(jié)合的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Go語言中嵌入式緩存庫的用法詳解

    Go語言中嵌入式緩存庫的用法詳解

    Go?語言中有一些非常高效的嵌入式緩存庫,groupcache?和?bigcache?是兩個非常流行且高性能的庫,本文將詳細介紹一下二者的用法,有需要的小伙伴可以參考下
    2025-01-01
  • golang中defer的關(guān)鍵特性示例詳解

    golang中defer的關(guān)鍵特性示例詳解

    defer是golang語言中的關(guān)鍵字,用于資源的釋放,會在函數(shù)返回之前進行調(diào)用。下面這篇文章主要給大家介紹了關(guān)于golang中defer的關(guān)鍵特性,文中通過示例代碼介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • golang實戰(zhàn)之truncate日志文件詳解

    golang實戰(zhàn)之truncate日志文件詳解

    這篇文章主要給大家介紹了關(guān)于golang實戰(zhàn)之truncate日志文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • Golang內(nèi)存模型教科書級講解

    Golang內(nèi)存模型教科書級講解

    go官方介紹go內(nèi)存模型的時候說:探究在什么條件下,goroutine?在讀取一個變量的值的時,能夠看到其它?goroutine?對這個變量進行的寫的結(jié)果,Go內(nèi)存模型規(guī)定了一些條件,在這些條件下,在一個goroutine中讀取變量返回的值能夠確保是另一個goroutine中對該變量寫入的值
    2023-03-03
  • Go?并發(fā)編程協(xié)程及調(diào)度機制詳情

    Go?并發(fā)編程協(xié)程及調(diào)度機制詳情

    這篇文章主要介紹了Go并發(fā)編程協(xié)程及調(diào)度機制詳情,協(xié)程是Go語言最大的特色之一,goroutine的實現(xiàn)其實是通過協(xié)程,更多相關(guān)內(nèi)容需要的朋友可以參考一下
    2022-09-09

最新評論

涟源市| 苏尼特右旗| 盱眙县| 视频| 道真| 小金县| 吉水县| 麻阳| 石棉县| 十堰市| 辽源市| 金堂县| 桃江县| 桦甸市| 内黄县| 亚东县| 精河县| 博白县| 达日县| 芜湖市| 永新县| 灵寿县| 锦州市| 张家口市| 石林| 额尔古纳市| 兴海县| 裕民县| 东海县| 海安县| 乌海市| 福安市| 岳阳市| 兴文县| 喜德县| 沂南县| 济源市| 农安县| 贵阳市| 双鸭山市| 驻马店市|