分享
golang json解码的坑
golang推广大使 · · 3034 次点击 · · 开始浏览这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。
go语言中有个大坑,那就json反序列化的坑。下面的代码给出示例和解决办法:
package main
import (
"bytes"
"log"
"time"
"github.com/json-iterator/go"
)
type Info struct {
Id int
}
func Log(format string, args ...interface{}) {
log.Printf(format+"\n", args...)
}
func main() {
log.SetFlags(log.Ldate | log.Lshortfile) //
m := make(map[string]interface{})
i := Info{
Id: int(time.Now().UnixNano()),
}
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, _ := json.Marshal(i)
json.Unmarshal(data, &m)
Log("m is:%+v", m)
dec := json.NewDecoder(bytes.NewBuffer(data))
dec.UseNumber()
dec.Decode(&m)
Log("usenumber m is:%+v", m)
dec = json.NewDecoder(bytes.NewBuffer(data))
dec.Decode(&m)
Log("m is:%+v", m)
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信3034 次点击 ∙ 1 赞
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
go语言中有个大坑,那就json反序列化的坑。下面的代码给出示例和解决办法:
package main
import (
"bytes"
"log"
"time"
"github.com/json-iterator/go"
)
type Info struct {
Id int
}
func Log(format string, args ...interface{}) {
log.Printf(format+"\n", args...)
}
func main() {
log.SetFlags(log.Ldate | log.Lshortfile) //
m := make(map[string]interface{})
i := Info{
Id: int(time.Now().UnixNano()),
}
json := jsoniter.ConfigCompatibleWithStandardLibrary
data, _ := json.Marshal(i)
json.Unmarshal(data, &m)
Log("m is:%+v", m)
dec := json.NewDecoder(bytes.NewBuffer(data))
dec.UseNumber()
dec.Decode(&m)
Log("usenumber m is:%+v", m)
dec = json.NewDecoder(bytes.NewBuffer(data))
dec.Decode(&m)
Log("m is:%+v", m)
}