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

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

如何在golang中將字符串從接口轉(zhuǎn)換為[]字符串?

如何在golang中將字符串從接口轉(zhuǎn)換為[]字符串?

Go
慕尼黑的夜晚無(wú)繁華 2022-01-10 17:24:07
我正在解析一個(gè)包含字符串?dāng)?shù)組的 JSON 對(duì)象:var ii interface{}json := "{\"aString\": [\"aaa_111\", \"bbb_222\"], \"whatever\":\"ccc\"}"err := json.Unmarshal([]byte(json), &ii)if err != nil {    log.Fatal(err)}data := ii.(map[string]interface{})fmt.Println(data["aString"]) // outputs: ["aaa_111" "bbb_222"]我試圖轉(zhuǎn)換data["aString"]為 []string 以便能夠遍歷它,但它失敗了: test := []string(data["aString"]).([]string) fmt.Println(test) // panic -> interface conversion:                    //          interface is string, not []string我該如何轉(zhuǎn)換data["aString"]?編輯:我沒(méi)有正確表達(dá)自己。如果我打印data,我有這樣的地圖:map[aString:["BBB-222","AAA-111"] whatever:ccc]我想循環(huán) aString (操作每個(gè)數(shù)組條目)。但我找不到方法,因?yàn)?aString 是type interface {}:for i, v := range aString { // <-- fails     // ...     fmt.Println(i, v)}這就是為什么我要轉(zhuǎn)換aString。我不想將看起來(lái)像數(shù)組的字符串轉(zhuǎn)換為數(shù)組。
查看完整描述

3 回答

?
蠱毒傳說(shuō)

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

我建議您總體上遠(yuǎn)離此實(shí)現(xiàn)。您的 json 可能會(huì)有所不同,但您可以輕松使用對(duì)象并避免所有此類(lèi)不安全的廢話(huà)。


無(wú)論如何,這種轉(zhuǎn)換不起作用,因?yàn)榍衅瑑?nèi)的類(lèi)型不是string,它們也是interface{}. 您必須迭代集合,然后對(duì)每個(gè)項(xiàng)目進(jìn)行類(lèi)型斷言,如下所示:


aInterface := data["aString"].([]interface{})

aString := make([]string, len(aInterface))

for i, v := range aInterface {

    aString[i] = v.(string)

}


查看完整回答
反對(duì) 回復(fù) 2022-01-10
?
MMTTMM

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

這是你需要的嗎?


package main


import (

    "fmt"

    "encoding/json"

)


func main() {

    js := "{\"aString\": [\"aaa_111\", \"bbb_222\"], \"whatever\":\"ccc\"}"

    a := make(map[string]interface{})

    json.Unmarshal([]byte(js), &a)

    for _, v := range a["aString"].([]interface{}) {

        str := v.(string)

        fmt.Println(str)

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-01-10
?
阿波羅的戰(zhàn)車(chē)

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

對(duì)于另一種方法,您可以使用 astruct代替:


package main


import (

   "encoding/json"

   "fmt"

)


func main() {

   s := []byte(`{"aString": ["aaa_111", "bbb_222"], "whatever":"ccc"}`)

   var t struct {

      Astring []string

      Whatever string

   }

   json.Unmarshal(s, &t)

   fmt.Printf("%+v\n", t) // {Astring:[aaa_111 bbb_222] Whatever:ccc}

}


查看完整回答
反對(duì) 回復(fù) 2022-01-10
  • 3 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專(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)