私は、golangを使用してJSONファイルをいくつかの構造体にデコードしようとしています。タイプの囲碁値に変換することはできませんアンマーシャリングオブジェクト[] main.TrackこのJSONをマーシャリングしようとするとGoエラーが発生するのはなぜですか?
私は理解していない:しかし、私にしようとするときは、
JSONというエラーが発生します。問題のコードは次のとおりです。JSONはfound hereです。
package main import ( "encoding/json" "fmt" "net/http" "os" ) // Tracks a group of Track types type Tracks struct { Tracks []Track } // Track represents a singular track type Track struct { Name string URL string Artist Artist } // Artist represents a single artist type Artist struct { Name string MBID string URL string } func main() { url := "http://ws.audioscrobbler.com/2.0/?method=geo.gettoptracks&api_key=c1572082105bd40d247836b5c1819623&format=json&country=Netherlands" response, err := http.Get(url) if err != nil { fmt.Printf("%s\n", err) os.Exit(1) } defer response.Body.Close() var tracks Tracks decodeErr := json.NewDecoder(response.Body).Decode(&tracks) if decodeErr != nil { fmt.Printf("%s\n", decodeErr) os.Exit(1) } for _, track := range tracks.Tracks { fmt.Printf("%s: %s\n", track.Artist.Name, track.Name) } }
私の最初の考え多分あなたは私がしなかった、構造体にすべての単一のJSON値を分類する必要がありますが、this articleを読めと言いれました:
をこれには2つの答えがあります。簡単なオプションは、あなたのデータがどのように見えるかを知ったときに、JSONをあなたが定義した構造体に解析することです。 構造体に収まらないフィールドは無視されます。まず、そのオプションについて説明します。
これは、そうではないと私を導きます。
このシナリオでは何が間違っていますか?
あなたは[JSON-to-Goのツール]を使用して試すことができます問題のこの種を回避したい場合(https://mholt.github.io/json-to-go/)。基本的にはjsonを型定義に変換します。 – dragosplesca