为了账号安全,请及时绑定邮箱和手机立即绑定

无法将数字解组为 Go Value

无法将数字解组为 Go Value

Go
慕侠2389804 2021-07-29 18:04:52
我尽量避免用简单的答案提出问题,但我似乎无法弄清楚这里的问题是什么......(标题中的问题)相关代码:match := new(Match)if _, msgB, err = ws.ReadMessage(); err != nil {    panic(err)}else {    println(string(msgB))    err = json.Unmarshal(msgB, match)    if err != nil { panic(err) }}type Match struct {    Teams [][]Char    Map [][]Tile    ID string //uuid    Socket *websocket.Conn `json:'-'`}type Char struct {    ID int    HP int    CT int    Stats statList     X int    Y int    ACList Actions}type statList struct {    Str int    Vit int    Int int    Wis int    Dex int    Spd int}type Actions struct {    Actions []Action    TICKCT int}错误:2014/03/28 12:11:41 http:恐慌服务 127.0.0.1:56436:json:无法将数字解组为 main.Char 类型的 Go 值
查看完整描述

1 回答

?
GCT1015

TA贡献1827条经验 获得超4个赞

我制作了一个固定版本的代码(playground)。这似乎是主要的错误:


type Char struct {

    ID     int

    HP     int

    CT     int

    Stats  []int // This was statList which won't work

    X      int

    Y      int

    ACList Actions

}

还要注意我所做的定义,Tile它允许数字为nil.


type Tile struct {

    Depth int

    Type  int

    Unit  *int

}

你没有提供所有的结构,所以我做了一些 - 可能是错误的!总之就是:


import (

    "encoding/json"

    "fmt"

)


type Match struct {

    Teams [][]Char

    Map   [][]Tile

    ID    string //uuid

    //    Socket *websocket.Conn `json:'-'`

}


type Char struct {

    ID     int

    HP     int

    CT     int

    Stats  []int // This was statList which won't work

    X      int

    Y      int

    ACList Actions

}

type statList struct {

    Str int

    Vit int

    Int int

    Wis int

    Dex int

    Spd int

}

type Action string

type Actions struct {

    Actions []Action

    TICKCT  int

}


type Tile struct {

    Depth int

    Type  int

    Unit  *int

}


var data = `{

"Teams": [

    [

        {

            "ID": 1,

            "HP": 10,

            "CT": 0,

            "Stats": [

                1,

                1,

                1,

                1,

                1,

                1

            ],

            "X": 0,

            "Y": 0,

            "ACList": {

                "Actions": [],

                "TICKCT": 0

            }

        }

    ],

    [

        {

            "ID": 2,

            "HP": 10,

            "CT": 0,

            "Stats": [

                1,

                1,

                1,

                1,

                1,

                1

            ],

            "X": 2,

            "Y": 2,

            "ACList": {

                "Actions": [],

                "TICKCT": 0

            }

        }

    ]

],

"Map": [

    [

        {

            "Depth": 1,

            "Type": 1,

            "Unit": 1

        },

        {

            "Depth": 1,

            "Type": 1,

            "Unit": null

        },

        {

            "Depth": 1,

            "Type": 1,

            "Unit": null

        }

    ],

    [

        {

            "Depth": 1,

            "Type": 1,

            "Unit": null

        },

        {

            "Depth": 1,

            "Type": 1,

            "Unit": null

        },

        {

            "Depth": 1,

            "Type": 1,

            "Unit": null

        }

    ],

    [

        {

            "Depth": 1,

            "Type": 1,

            "Unit": null

        },

        {

            "Depth": 1,

            "Type": 1,

            "Unit": null

        },

        {

            "Depth": 1,

            "Type": 1,

            "Unit": 2

        }

    ]

],

"ID": "0b055e19-9b96-e492-b816-43297f12cc39"}`


func main() {

    match := new(Match)

    err := json.Unmarshal([]byte(data), match)


    if err != nil {

        panic(err)

    }

    fmt.Printf("match = %#v\n", match)

}


查看完整回答
反对 回复 2021-08-02
  • 1 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信