第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 Go 中解析一個(gè)不熟悉的 YAML/JSON 文件

在 Go 中解析一個(gè)不熟悉的 YAML/JSON 文件

Go
牛魔王的故事 2022-03-07 15:38:49
在 Go 中,如何在事先不知道其結(jié)構(gòu)的情況下解析 YAML 數(shù)據(jù)?我見(jiàn)過(guò)的所有示例都假設(shè)您想要解碼您已經(jīng)知道其鍵的封送映射。如果你不知道鑰匙怎么辦?如果它不是地圖而是封送列表、標(biāo)量或其他一些常見(jiàn)類(lèi)型怎么辦?盡管我主要關(guān)注 YAML,但在這里,該技術(shù)似乎通常對(duì) JSON 等有用。因?yàn)榻馕鼋Y(jié)構(gòu)化數(shù)據(jù)(顯然是標(biāo)記結(jié)構(gòu))有一個(gè)通用模式。
查看完整描述

2 回答

?
慕容3067478

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊

對(duì)于 JSON,將數(shù)據(jù)解組為一個(gè)interface{}值。使用類(lèi)型斷言來(lái)確定值中的內(nèi)容。


var v interface{}

err := json.Unmarshal(data, &v)

if err != nil {

   // handle error

}

switch v := v.(type) {

case string:

    fmt.Println("string:", v)

case float64: 

    fmt.Println("number:", v)

case []interface{}:

    fmt.Println("array:", v)

case map[string]interface{}:

    fmt.Println("object:", v)

case nil:

    fmt.Println("nil")

}


查看完整回答
反對(duì) 回復(fù) 2022-03-07
?
鴻蒙傳說(shuō)

TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊

在 JSON 的情況下,json.Unmarshal如果您愿意,標(biāo)準(zhǔn)庫(kù)函數(shù)將解組任意 JSON,如果您將指針傳遞給未初始化的空接口。(見(jiàn)這個(gè)例子。)

官方文檔甚至說(shuō)了這么多:

為了將 JSON 解組為接口值,Unmarshal 將其中一項(xiàng)存儲(chǔ)在接口值中:

bool,用于 JSON 布爾值

float64,用于 JSON 數(shù)字

字符串,用于 JSON 字符串

[]interface{},用于 JSON 數(shù)組

map[string]interface{},用于 JSON 對(duì)象

無(wú) JSON null


編輯:雖然沒(méi)有記錄,但yaml包也是如此;我在我的工作站上進(jìn)行了測(cè)試,傳入一個(gè)指向未初始化的空接口的指針會(huì)導(dǎo)致正確的數(shù)組、映射和原語(yǔ)的初始化。


查看完整回答
反對(duì) 回復(fù) 2022-03-07
  • 2 回答
  • 0 關(guān)注
  • 185 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)