主頁(yè) > 知識(shí)庫(kù) > 利用Golang解析json數(shù)據(jù)的方法示例

利用Golang解析json數(shù)據(jù)的方法示例

熱門(mén)標(biāo)簽:百度地圖標(biāo)注搜索關(guān)鍵詞 騰訊外呼系統(tǒng)價(jià)格 電銷(xiāo)機(jī)器人可以補(bǔ)救房產(chǎn)中介嗎 ?兓? 成都呼叫中心外呼系統(tǒng)平臺(tái) 最短的地圖標(biāo)注 谷歌便利店地圖標(biāo)注 浙江人工智能外呼管理系統(tǒng) 電梯外呼訪客系統(tǒng)

本文主要給大家介紹的是關(guān)于Golang解析json數(shù)據(jù)的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹:

使用 Golang 解析 json 數(shù)據(jù),這種 json 格式是對(duì)象的數(shù)組,官方文檔有一個(gè)示例:

var jsonBlob = []byte(`[ 
 {"Name": "Platypus", "Order": "Monotremata"}, 
 {"Name": "Quoll", "Order": "Dasyuromorphia"} 
]`) 
type Animal struct { 
 Name string 
 Order string 
} 
var animals []Animal 
err := json.Unmarshal(jsonBlob, animals) 
if err != nil { 
 fmt.Println("error:", err) 
} 
fmt.Printf("%+v", animals)

它可以把 json 數(shù)據(jù)的對(duì)象解析到對(duì)應(yīng)的結(jié)構(gòu)體中。

如果是一維數(shù)組,帶鍵值對(duì)的形式,如:{“A”:3,”B”:3,”C”:5,”D”:5},代碼如下:

func main() {
 jsonData := []byte(`{"A":3,"B":3,"C":5,"D":5}`)
 var a map[string]int
 json.Unmarshal(jsonData, a)
 fmt.Printf("%+v\n", a)
}

可見(jiàn)鍵值對(duì)形式的 json 可以映射到 map 中,或者 interface{} .

如果是只有值的形式,如:[“a”,”b”,”c”,”d”,”e”],代碼如下:

func main() {
 jsonData := []byte(`["a","b","c","d","e"]`)
 var a []string
 json.Unmarshal(jsonData, a)
 fmt.Printf("%+v\n", a)
}

可見(jiàn)只有值的形式可以映射到一個(gè) slice 中。

關(guān)于 json 數(shù)據(jù)解析對(duì)于類(lèi)型,在函數(shù)注釋中都已有說(shuō)明:

To unmarshal JSON into an interface value,Unmarshal stores one of these in the interface value:
bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null

模擬 PHP 的 json_decode($jsonString, true) 函數(shù)

但是,看這種情況,在 PHP 中,如果用 json_decode(‘[“a”,”b”,”c”,”d”,”e”]', true) 這種第二個(gè)參數(shù)是 true 的解析 json,可以解析為帶鍵值對(duì)的對(duì)象的形式:

[
 0=>"a",
 1=>"b",
 2=>"c",
 3=>"d",
 4=>"e"
]

這種 Golang 怎么做到呢?

func main() {
 jsonData := []byte(`["a","b","c","d","e"]`)
 var a []string
 json.Unmarshal(jsonData, a)
 
 newData := make(map[int]string)
 for k, v := range a {
 newData[k] = v
 }
 
 fmt.Printf("%+v\n", newData)
}

應(yīng)該沒(méi)有內(nèi)置函數(shù),那就這樣手動(dòng)實(shí)現(xiàn)吧。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者使用Go語(yǔ)言能帶來(lái)一定的幫助,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

您可能感興趣的文章:
  • golang使用json格式實(shí)現(xiàn)增刪查改的實(shí)現(xiàn)示例
  • golang json.Marshal 特殊html字符被轉(zhuǎn)義的解決方法
  • golang結(jié)構(gòu)體與json格式串實(shí)例代碼
  • golang如何修改json文件內(nèi)容的方法示例
  • Golang JSON的進(jìn)階用法實(shí)例講解
  • golang如何自定義json序列化應(yīng)用詳解
  • golang json性能分析詳解
  • golang中json反序列化可能遇到的問(wèn)題
  • Golang map如何生成有序的json數(shù)據(jù)詳解
  • Golang中使用JSON的一些小技巧分享
  • golang實(shí)現(xiàn)sql結(jié)果集以json格式輸出的方法
  • Golang 如何解析和生成json

標(biāo)簽:瀘州 滄州 泰安 晉中 東營(yíng) 昭通 駐馬店 阿壩

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《利用Golang解析json數(shù)據(jù)的方法示例》,本文關(guān)鍵詞  利用,Golang,解析,json,數(shù)據(jù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《利用Golang解析json數(shù)據(jù)的方法示例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于利用Golang解析json數(shù)據(jù)的方法示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 企业400电话

    智能AI客服机器人
    15000

    在线订购

    合计11份范本:公司章程+合伙协议+出资协议+合作协议+股权转让协议+增资扩股协议+股权激励+股东会决议+董事会决议

    推薦文章