亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 嵌套映射過濾器

Golang 嵌套映射過濾器

Go
收到一只叮咚 2022-12-26 10:15:30
package mainimport ("encoding/json""fmt""io/ioutil""net/http""strings")func main() {fmt.Println(fecthData())}func fecthData() (map[string]interface{}, error) {body := strings.NewReader("dil_kodu=tr")req, err := http.NewRequest("POST", "https://www.haremaltin.com/dashboard/ajax/doviz", body)if err != nil {    // handle err    return nil, err}req.Header.Set("X-Requested-With", "XMLHttpRequest")resp, err := http.DefaultClient.Do(req)if err != nil {    // handle err    return nil, err}defer resp.Body.Close()jsonData, err := ioutil.ReadAll(resp.Body)if err != nil {    panic(err)    return nil, err}var data map[string]interface{}err = json.Unmarshal(jsonData, &data)if err != nil {    return nil, err}return data, nil}你可以看到上面的完整代碼,我有一個如下的響應,它是你看到的嵌套映射,并且想要達到“data-ATA5_ESKI-satis”值,即 34319。有沒有人可以幫助我。感謝您的時間部分回復如下:地圖[數據:地圖[AEDTRY:地圖[也:4.6271代碼:AEDTRY dir:地圖[align_dir:satis_dir:]舒適:4.7116能力:4.6224滿足:4.7271日期:17-06-2022 19:41:45 yuksek:4.7276] AEDUSD:map[alis:0.2680 code:AEDUSD dir:map[alis_dir: satis_dir:] comfort:0.27 capacity:0.268 satis:0.2700 date:17-06-2022 19:30:02 yuksek:0.27]... 星期一:地圖[also:1024.790 code:ALTIN dir:map[align_dir:down satis_dir:down] dust:1029.05 time:1032.13 satis:1030.650 date:17-06-2022 19:41:58 yuksek:1040] ATA5_ESKI:map[also :33869 代碼: ATA5_ESKI 目錄: 地圖 [ move_dir : down satis_dir : down ] dust : 34266 time : 34112 satis : 34319 date : 17 - 06 - 2022 19 : 41 : 58 yuksek : 34630] XPTUSD : map [ move : 933 code : XPTUSD dir :map[alis_dir: satis_dir:] heart:936 caps:953 satis:936 date:17-06-2022 19:41:58 yuksek:957]] meta:map[fiyat_guncelleme:2000 fiyat_yayini:web_socket time:1.655484118278e +1 time_formatted:]]
查看完整描述

1 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

for _, v := range data { // we need value part of the map

    m, ok := v.(map[string]interface{}) // we need the convert the map 

                                        // into interface for iteration

    if !ok {

        fmt.Printf("Error %T", v)

    }

    for k, l := range m {

        if k == "ATA_ESKI"{ // the value we want is inside of this map

            a, ok := l.(map[string]interface{}) // interface convert again

            if !ok {

                fmt.Printf("Error %T", v)

            }

            for b,c := range a{

                if b == "satis"{ // the value we want

                    fmt.Println("Price is", c)

                }

            }

        }

    }

}

我們可以在最后的“返回數據,零”之前獲得添加此迭代的值,但我認為必須有更簡單的方法。


查看完整回答
反對 回復 2022-12-26
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號