首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >golang解编组websocket-rails JSON响应

golang解编组websocket-rails JSON响应
EN

Stack Overflow用户
提问于 2015-03-27 08:13:24
回答 1查看 268关注 0票数 2
代码语言:javascript
复制
[
    [
        "client_connected",
         {
            "id": null,
            "channel": null,
            "user_id": null,
            "data": {
               "connection_id": null
            },
            "success": null,
            "result": null,
            "server_token": null
        }   
    ]
]

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-27 09:05:08

这不是最好的解决方案,但它是最简单的:

由于JSON输入不是方便的键值对(或其数组),我们不能只使用一个简单的struct (这是可取的)来建模内容。

您的JSON输入是一个数组。其中有混合类型,所有这些类型都可以存储在空接口interface{}中(可以保存任何类型的值)。

因此,您可以使用以下类型表示数据结构:

代码语言:javascript
复制
js := [][]interface{}{}

下面是解压缩和打印它的完整代码:

代码语言:javascript
复制
js := [][]interface{}{}
err := json.Unmarshal([]byte(input), &js)
if err != nil {
    panic(err)
}
fmt.Printf("%q", js)

输出(包装):

代码语言:javascript
复制
[["client_connected" map["server_token":<nil> "id":<nil> "channel":<nil> 
  "user_id":<nil> "data":map["connection_id":<nil>] "success":<nil> "result":<nil>]]]

围棋游乐场上试一试。

备注:

似乎我们可以通过对interface{}变量使用js类型来进一步简化它:

代码语言:javascript
复制
var js interface{}

而且它也能工作,但在这种情况下,我们甚至需要类型断言来访问“包装器”数组的元素,这将是一个倒退。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29295999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档