将字节数组解组到接口并将该接口类型转换为结构不起作用?

Sar*_*dra 3 json interface go

我已经用 golang 编码有一段时间了。我遇到了一些我认为可以完美工作的东西。

当我在 golang 中 JSON Marshal 一个嵌套结构时,我得到了字节数组,当我将其 UnMarshal 到一个接口并将接口转换为相应的嵌套结构时,它给了我一个恐慌,说明接口转换:接口是 map[string]interface但不是嵌套结构。

请点击下面的链接。

https://play.golang.org/p/apdR4TKjee-

有人可以向我解释我缺少什么吗?

Adr*_*ian 5

当您将 JSON 解组为时interface{}它无法知道您希望它使用什么类型,因此它默认为map[string]interface{} 文档中所示的类型:

要将 JSON 解组为接口值,Unmarshal 将以下内容之一存储在接口值中:

...

map[string]interface{}, for JSON objects

如果要解组为特定类型,请将该类型的实例传递给 Unmarshal:

var result sample 
err = json.Unmarshal(data,&result)
Run Code Online (Sandbox Code Playgroud)