问题

golang 使用 uint64 字段类型,使用 json 序列化后却变成了 string。

根源

原来 json 整形的最大值为 2的53次方 减一,uint64 的最大值为 2 的 64次方减一,所以序列化后就改了类型变成 string。

解决

由于我们对 uint64 没有刚需,所以直接换了类型 uint32。也可以不用换,直接序列化后当作字符串处理。

PS. 至于说为什么 json 的整形最大值为 53 次方这么个数字,是因为 js 的 double 类型最多支持 53 位二进制。