问题:
尝试断言特定结构类型的接口时从 JSON 反序列化时,会抛出错误,指出接口不是预期的type.
特定错误:
panic: interface conversion: interface {} is map[string]interface {}, not main.Data
详细信息:
代码尝试将 JSON 数据反序列化到接口中然后断言数据结构的接口。然而,在运行时,Go 希望接口是一个 map[string]interface{},而不是一个 Data 对象。
解决方案:
正确的接口断言:
接口不能断言为任何任意结构类型。必须将它们断言为接口表示的正确类型。在这种情况下,只有首先为数据结构分配了该类型的值,接口才能被断言。
直接解组:
为了避免接口断言的需要,它是建议直接将 JSON 数据解组为所需的结构类型。这可确保数据正确转换,无需中间断言。
代码示例:
type Data struct { Content string Links []string } func main() { var AData Data // Deserialize JSON directly into the Data struct err = json.Unmarshal([]byte(value), &AData) if err != nil { panic(err) } }
通过直接将 JSON 数据解组到 AData 结构中,消除了对接口断言的需要,确保正确的数据转换。
以上是为什么我的 JSON 反序列化会抛出接口断言失败?的详细内容。更多信息请关注PHP中文网其他相关文章!