doujie1908
2016-07-31 04:42
浏览 127
已采纳

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

When trying to json.Unmarshal some JSON code from a website into a struct I created, I receive the following error:

cannot unmarshal number into Go value of type string

Here is my code: https://play.golang.org/p/-5nphV9vPw

图片转代码服务由CSDN问答提供 功能建议

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

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

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • douka19950505 2016-07-31 05:20
    已采纳

    this works for me (corrected version):

    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)
    }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • doucan8246326 2016-07-31 05:17

    There are multiple errors in the struct definition. Here is fixed version.

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题