Golang 嵌套映射过滤器

package main


import (

"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:]]


收到一只叮咚
浏览 82回答 1
1回答

撒科打诨

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)                }            }        }    }}我们可以在最后的“返回数据,零”之前获得添加此迭代的值,但我认为必须有更简单的方法。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go