Golang - 无法将数字解组为字符串类型的Go值

时间:2016-07-31 04:42:30

标签: json go struct unmarshalling

当尝试将json.Unmarshal某个JSON代码从网站转换为我创建的结构时,我收到以下错误:

  

无法将数字解组为字符串

的Go值

这是我的代码:https://play.golang.org/p/-5nphV9vPw

2 个答案:

答案 0 :(得分:0)

结构定义中存在多个错误。这是固定版本。

https://play.golang.org/p/O39E3CdKes

答案 1 :(得分:-1)

这对我有用(更正后的版本):

package main

import (
    "encoding/json"
    "fmt"
    "log"
)

type movie struct {
    Adult         bool
    Backdrop_path string
    Budget        int
    Genres        []struct {
        Id   int // string
        Name string
    }
    Homepage             string
    Id                   int
    Imdb_id              string
    Original_language    string
    Original_title       string
    Overview             string
    Popularity           float64 //    string
    Poster_path          string
    Production_companies []struct {
        Name string
        Id   int
    }
    Production_countries []struct {
        Name string
    }
    Release_date     string
    Revenue          int
    Runtime          int
    Spoken_languages []struct {
        Name string
    }
    Status       string
    Tagline      string
    Title        string
    Video        bool
    Vote_average float64
    Vote_count   int
    Embedurl     string
}

func main() {
    var movieData movie
    str := `
    {
    "adult":false,
    "backdrop_path":"/mWuHbFc7qVmVcpybx3ezhXLj5VO.jpg",
    "belongs_to_collection":null,
    "budget":25000000,
    "genres":
        [
        {
            "id":35,
            "name":"Comedy"
        },
        {
            "id":37,
            "name":"Western"
        }
        ],
    "homepage":"",
    "id":8388,
    "imdb_id":"tt0092086",
    "original_language":"en",
    "original_title":"¡Three Amigos!",
    "overview":"Three unemployed actors accept an invitation to a Mexican village to replay their bandit fighter roles, unaware that it is the real thing.",
    "popularity":0.799492,
    "poster_path":"/ehCzedovkiM8CnDeuSSHlRbdfxI.jpg",
    "production_companies":
    [{
        "name":"L.A. Films",
        "id":960
     },
     {
        "name":"Home Box Office (HBO)",
        "id":3268
     }],
    "production_countries":
    [{
        "iso_3166_1":"US",
        "name":"United States of America"
    }],
    "release_date":"1986-12-12",
    "revenue":0,
    "runtime":102,
    "spoken_languages":
    [{
        "iso_639_1":"en",
        "name":"English"
    },{
        "iso_639_1":"de",
        "name":"Deutsch"
    },{
        "iso_639_1":"es",
        "name":"Español"
    }],
    "status":"Released",
    "tagline":"They're Down On Their Luck And Up To Their Necks In Senoritas, Margaritas, Banditos And Bullets!",
    "title":"Three Amigos",
    "video":false,
    "vote_average":6.2,
    "vote_count":116
    }`
    err := json.Unmarshal([]byte(str), &movieData)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(movieData)
}