интерфейс типа {} не поддерживает индексирование - PullRequest
0 голосов
/ 27 марта 2019

Я хочу получить значения от bid. Я уже пробовал data.(map[string]interface{}), но это не сработало.

когда я пытался, он говорит:

"преобразование интерфейса: интерфейс {} - это [] интерфейс {}, а не карта [string] interface {}"

Пожалуйста, помогите мне ...

Это мой код.

    url := "https://api.binance.com/api/v1/depth?symbol=RENBTC"
    a, _ := http.Get(url)
    e, _ := ioutil.ReadAll(a.Body)

    var data map[string]interface{}

    _ = json.Unmarshal([]byte(e), &data)
    bid := data["bids"]
    fmt.Println(bid[0])

tooltip

1 Ответ

3 голосов
/ 27 марта 2019

Вам нужно утверждение типа bid, ok := data["bids"].([]interface{})
См .: Объяснение утверждений типа в Go

Попробуйте это:

package main

import (
    "encoding/json"
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
)

func main() {
    url := "https://api.binance.com/api/v1/depth?symbol=RENBTC"
    a, err := http.Get(url)
    if err != nil {
        log.Fatal(err)
    }

    buf, err := ioutil.ReadAll(a.Body)
    if err != nil {
        log.Fatal(err)
    }

    var data map[string]interface{}
    err = json.Unmarshal([]byte(buf), &data)
    if err != nil {
        log.Fatal(err)
    }

    bid, ok := data["bids"].([]interface{})
    if !ok {
        log.Fatal("not ok")
    }

    s, ok := bid[0].([]interface{})
    if !ok {
        log.Fatal("not ok")
    }
    fmt.Println(s)
}

Выход:

[0.00000603 5122.00000000]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...