在 go 中,什么是 json.Unmarshall 最大深度?

我正在尝试解析如下所示的 JSON 响应:


{

    "object": "page",

    "entry": [

        {

            "id": 185985174761277,

            "time": 1462333588680,

            "messaging": [

                {

                    "sender": {

                        "id": 1053704801343033

                    },

                    "recipient": {

                        "id": 185985174761277

                    },

                    "timestamp": 1462333588645,

                    "message": {

                        "mid": "mid.1462333588639:d44f4374dfc510c351",

                        "seq": 1948,

                        "text": "Hello World!"

                    }

                }

            ]

        }

    ]

}

我正在使用json.Unmarshal并传递以下结构作为接口:


type Message struct {

    Object string

    Entry  []struct {

        Id        int64

        Time      int64

        Messaging []struct {

            Sender struct {

                Id string

            }

            Recipient struct {

                Id string

            }

            Timestamp int64

            Message   struct {

                Mid  string

                Seq  string

                Text string

            }

        }

    }

}

但是,json.Unmarshal与 JSON 响应中的任何结构都不匹配Messaging


这个函数准确地重现了这个问题:


type Message struct {

    Object string

    Entry  []struct {

        Id        int64

        Time      int64

        Messaging []struct {

            Sender struct {

                Id string

            }

            Recipient struct {

                Id string

            }

            Timestamp int64

            Message   struct {

                Mid  string

                Seq  string

                Text string

            }

        }

    }

}


    

这是输出:


{Object:page Entry:[{Id:185985174761277 Time:1462333588680 Messaging:[{Sender:{Id:} Recipient:{Id:} Timestamp:0 Message:{Mid: Seq: Text:}}]}]}

正如你所看到的,Message 结构中的所有字段都没有设置。


我的问题是,json.Unmarshal 可以匹配的最大深度吗?如果没有,我做错了什么?


茅侃侃
浏览 146回答 1
1回答

HUX布斯

我认为 json.Unmarshal 没有最大深度。在你的代码,Seq在外地Message字段定义为字符串,所以是Id在领域Sender和Recipient,而在JSON他们都是整数。这应该是缺少字段的罪魁祸首。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go