Web'den JSON verilerini okudum, ancak bu kod boş sonuç döndürüyor. Burada ne yapıyorum emin değilim.Golang'da JSON yanıtı nasıl alınır
package main
import "os"
import "fmt"
import "net/http"
import "io/ioutil"
import "encoding/json"
type Tracks struct {
Toptracks []Toptracks_info
}
type Toptracks_info struct {
Track []Track_info
Attr []Attr_info
}
type Track_info struct {
Name string
Duration string
Listeners string
Mbid string
Url string
Streamable []Streamable_info
Artist []Artist_info
Attr []Track_attr_info
}
type Attr_info struct {
Country string
Page string
PerPage string
TotalPages string
Total string
}
type Streamable_info struct {
Text string
Fulltrack string
}
type Artist_info struct {
Name string
Mbid string
Url string
}
type Track_attr_info struct {
Rank string
}
func get_content() {
// json data
url := "http://ws.audioscrobbler.com/2.0/?method=geo.gettoptracks&api_key=c1572082105bd40d247836b5c1819623&format=json&country=Netherlands"
res, err := http.Get(url)
if err != nil {
panic(err.Error())
}
body, err := ioutil.ReadAll(res.Body)
if err != nil {
panic(err.Error())
}
var data Tracks
json.Unmarshal(body, &data)
fmt.Printf("Results: %v\n", data)
os.Exit(0)
}
func main() {
get_content()
}
Bu çok yardımcı oldu. Hedefe ulaşmak biraz zamanımı aldı, ama yine de yeniyim. Bir yapıya son verdim, sonra '' 'tmp: = myStuct {}' '' '' '' 'json.NewDecoder (r.Body) .Decode (& tmp)' '' ve buradan jsonumu kullanabilirdim. – mvndaai
Yapıdaki öğelerin adları için Uppercase'yi kullanmanız gerekiyor gibi görünüyor.'Tip WebKeys struct { \t Tuşlar [] struct { \t \t X5t dize \t \t -X5C [] dize \t} }' sen ayrıştırma ediyoruz JSON gerçek parametreler küçük harfle olduğunda bile. JSON örnek: '{ \t "anahtarlar": [{ \t \t "x5t": "fan", \t \t "-X5C": "baaaar" \t}] } 'doğru olduğundan – Wilson
. Küçük harf tuşlarına, bildirildikleri paketin dışında erişilemez, "kodlama/json" bunları ayarlayamaz. –