[
[
"client_connected",
{
"id": null,
"channel": null,
"user_id": null,
"data": {
"connection_id": null
},
"success": null,
"result": null,
"server_token": null
}
]
]考虑到websocket服务器的这个JSON响应,我想知道解析它的最佳方法是什么,因为有一个没有任何键的字符串?
发布于 2015-03-27 09:05:08
这不是最好的解决方案,但它是最简单的:
由于JSON输入不是方便的键值对(或其数组),我们不能只使用一个简单的struct (这是可取的)来建模内容。
您的JSON输入是一个数组。其中有混合类型,所有这些类型都可以存储在空接口interface{}中(可以保存任何类型的值)。
因此,您可以使用以下类型表示数据结构:
js := [][]interface{}{}下面是解压缩和打印它的完整代码:
js := [][]interface{}{}
err := json.Unmarshal([]byte(input), &js)
if err != nil {
panic(err)
}
fmt.Printf("%q", js)输出(包装):
[["client_connected" map["server_token":<nil> "id":<nil> "channel":<nil>
"user_id":<nil> "data":map["connection_id":<nil>] "success":<nil> "result":<nil>]]]在围棋游乐场上试一试。
备注:
似乎我们可以通过对interface{}变量使用js类型来进一步简化它:
var js interface{}而且它也能工作,但在这种情况下,我们甚至需要类型断言来访问“包装器”数组的元素,这将是一个倒退。
https://stackoverflow.com/questions/29295999
复制相似问题