2017-12-12 8 views
-2

このAPIエンドポイントを使用してJSONを解析しようとしています。cryptocompare APIによって生成されたJSONを解析する方法は?

https://www.cryptocompare.com/api/data/coinlist/

私はそれが要求罰金を作って見ることができる、私はその後、応答の本文を解読しようとすると、それは乱数の負荷で戻ってきます。

私のデバッガから本文の値をコピーすると、以下のようになります。

< [] UINT8>(長さ:643401、キャップ:1048064)

ここでは私のコードです。

私は、JSONからDataキー内のすべてを取得し、それを構造体にマップできるようにしたいと考えています。誰でも私が間違っていることを見ることができますか?

以下は、エンドポイントにヒットしたときのブラウザの表示例です。

{ 
"Response": "Success", 
"Message": "Coin list succesfully returned! This api is moving to https://min-api.cryptocompare.com/data/all/coinlist, please change the path.", 
"BaseImageUrl": "https://www.cryptocompare.com", 
"BaseLinkUrl": "https://www.cryptocompare.com", 
"DefaultWatchlist": { 
"CoinIs": "1182,7605,5038,24854,3807,3808,202330,5324,5031,20131", 
"Sponsored": "" 
}, 
"Data": { 
"42": { 
"Id": "4321", 
"Url": "/coins/42/overview", 
"ImageUrl": "/media/12318415/42.png", 
"Name": "42", 
"Symbol": "42", 
"CoinName": "42 Coin", 
"FullName": "42 Coin (42)", 
"Algorithm": "Scrypt", 
"ProofType": "PoW/PoS", 
"FullyPremined": "0", 
"TotalCoinSupply": "42", 
"PreMinedValue": "N/A", 
"TotalCoinsFreeFloat": "N/A", 
"SortOrder": "34", 
"Sponsored": false 
}, 
+2

すべてのコードが表示されているように見えます。 JSONを解析するコードを表示します。乱数とその表示方法を表示します。 –

+3

あなたのコードの半分は 'resp、err:= http.Get(url)'に置き換えることができます – tkausl

+2

あなたはデータのデコード方法や "乱数"の意味を示していません。 [mcve]を作成してください。 – JimB

答えて

1

イムない私はあなたの質問を理解している場合、正しくが、ここで私はAPIによって与えられた応答を解析する方法をです確認してください。

package main 

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

type Data struct { 
    Id  string 
    CoinName string 
    Algorithm string 
    // You can add more properties if you need them 
} 

type Response struct { 
    Response   string 
    Message   string 
    BaseImageUrl  string 
    BaseLinkUrl  string 
    DefaultWatchlist map[string]string 
    // If you're interested in the Data only all of the above properties can be excluded 
    Data    map[string]Data 
} 

func main() { 
    url := "https://min-api.cryptocompare.com/data/all/coinlist" 
    resp := Response{} 

    // Getting the data using http 
    r, err := http.Get(url) 
    if err != nil { 
     log.Fatal(err.Error()) 
    } 

    // Reading the response body using ioutil 
    body, err := ioutil.ReadAll(r.Body) 
    if err != nil { 
     log.Fatal(err.Error()) 
    } 
    defer r.Body.Close() 

    if r.StatusCode == http.StatusOK { 
     // Unmarshaling the json bytes into Response struct 
     json.Unmarshal(body, &resp) 

     fmt.Println(resp.Data) // Printing parsed struct 
    } 
} 

「私はその後、体をデコードしてみてください応答の数が多く、乱数が戻ってきます」

これら乱数アンマーシャルために完全であるioutil.ReadAll()方法、により与えられるバイト[]byteのスライスとして応答体です。

+0

ありがとうございました!まさに私が何をしたのか。 –

+0

@NickPocockうれしい私はあなたを助けることができます:] ** Happy gophering!** – Mihailo

関連する問題