go语言中json.unmarshal返回nil表示解析成功而非失败
在Go语言中,json.Unmarshal函数的设计遵循标准错误处理模式:它返回一个error类型的第二个返回值,当该值为nil时,表明JSON解析成功;非nil才表示发生错误(如格式错误、类型不匹配等)。你遇到的输出 Unmarshalled:
正确的用法如下:
coded := redis.LoadFromBase()
err := json.Unmarshal(coded, &p) // 注意:&p 必须是指向可赋值变量的指针
if err != nil {
log.Fatalf("JSON unmarshal failed: %v", err)
}
fmt.Println("Bytes:", coded)
fmt.Println("Unmarshalled:", p) // ✅ 此处打印解码后的结构体/值⚠️ 关键注意事项:
✅ 示例结构体定义参考:
type Post struct {
Title string `json:"Title"`
Content string `json:"Cont
ent"`
}
var p Post总结:json.Unmarshal 返回 nil 是成功的信号,不是bug。调试时请始终检查 err 判断是否出错,并通过目标变量 p 查看实际解码结果。