我有一个 json
,其中包含一个带有 bigint
{"NETWORK_ID": 6000370005980500000071}
我在编码之前的格式是 map[string]interface{}
当我编码它并打印到控制台时,一切似乎都很好,但由于它在其他媒体中的大小,这个字段实际上会产生问题,所以我想将它序列化为一个字符串。
UseNumber()
似乎是为了这个目的,但我认为它只是为了解码。
有什么方法可以检测到这种 bigint
数字并将它们序列化为字符串吗?
最佳答案
您需要创建一个自定义类型来实现 json.Marshaler接口(interface),并编码到一个字符串。示例:
type MyBigInt big.Int
func (i MyBigInt) MarshalJSON() ([]byte, error) {
i2 := big.Int(i)
return []byte(fmt.Sprintf(`"%s"`, i2.String()), nil
}
这将始终将您的自定义类型编码为带引号的十进制数。
关于json - 如何用 bigints 编码 JSON?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48802728/