golang 解组 websocket-rails JSON 响应

[

    [

        "client_connected",

         {

            "id": null,

            "channel": null,

            "user_id": null,

            "data": {

               "connection_id": null

            },

            "success": null,

            "result": null,

            "server_token": null

        }   

    ]

]

鉴于来自websocket-rails服务器的这个 JSON 响应,我想知道解析它的最佳方法是什么,因为有一个没有任何键的字符串?


猛跑小猪
浏览 176回答 1
1回答

梦里花落0921

这不是最好的解决方案,但它是最简单的:由于 JSON 输入不是方便的键值对(或它的数组),我们不能只使用简单的struct(这是可取的)来建模内容。您的 JSON 输入是一个数组数组。里面有混合类型,所有类型都可以存储在空接口中interface{}(可以保存任何类型的值)。因此,您可以使用以下类型表示您的数据结构:js := [][]interface{}{}这是解组并打印它的完整代码:js := [][]interface{}{}err := json.Unmarshal([]byte(input), &js)if err != nil {&nbsp; &nbsp; panic(err)}fmt.Printf("%q", js)输出(包装):[["client_connected" map["server_token":<nil> "id":<nil> "channel":<nil>&nbsp;&nbsp; "user_id":<nil> "data":map["connection_id":<nil>] "success":<nil> "result":<nil>]]]在Go Playground上试一试。笔记:似乎我们可以通过interface{}为js变量使用类型来进一步简化它:var js interface{}它也可以工作,但在这种情况下,我们甚至需要类型断言才能到达“包装器”数组的元素,这将是一个后退。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go