如何用bigints编组JSON?

时间:2018-02-15 08:20:54

标签: json go type-conversion biginteger

我的json包含一个bigint

的字段

{"NETWORK_ID": 6000370005980500000071}

编组前的格式为map[string]interface{}

当我整理它并打印到控制台时,一切似乎都很好但是这个字段实际上会因其在其他介质中的大小而产生问题所以我想将它序列化为字符串。

UseNumber()似乎就是为了这个目的,但它只是为了我想的解码。

有什么方法可以检测到这种bigint数字并将它们序列化为字符串?

1 个答案:

答案 0 :(得分:2)

您需要创建一个实现json.Marshaler接口的自定义类型,并对字符串进行编组。例如:

type MyBigInt big.Int

func (i MyBigInt) MarshalJSON() ([]byte, error) {
    i2 := big.Int(i)
    return []byte(fmt.Sprintf(`"%s"`, i2.String()), nil
}

这将始终将您的自定义类型封装为带引号的十进制数。