json - 如何用 bigints 编码 JSON?

标签 json go type-conversion biginteger

我有一个 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/

相关文章:

c - 在 C 中是否有强制类型不兼容的好方法?

javascript - AngularJS ng-repeat over data with # keys

go - 为什么我需要睡两次才能看到 goroutines?

go - 用golang查询的结构替换变量

sorting - 按数字和字母顺序对基于结构的 slice 进行排序

c# - C++ 中的结构大小 & 转换为 C#

r - 将 POSIXct 向量转换为日期格式会在 R 中添加一天(9/30 变为 10/1)

javascript - 如何唯一合并两个 JSON 文件?

javascript - Dropbox API 文件 URL 无效

java - 如何将对象节点的Json数组解析为不同的dto对象