首页 > 解决方案 > 有没有办法从请求中接收 JSON 数据并将其推送到 MongoDB,在浮点数上保留整数类型?

问题描述

我需要保留在 JSON 中传递的数字,这些数字符合要求作为 int32 存储在数据库中的 int32 而不是浮点数。

我有一个 Go 应用程序,它接收插入到 Mongo 数据库中的 JSON 请求数据。这些数据被解组到一个接口中,并传递给 mgo 的 Insert 方法(https://godoc.org/github.com/globalsign/mgo#Collection.Insert)。

默认情况下,为了将数据解组到接口中,Go 将数字转换为 float64。我遇到的问题是从 JSON 中解组的整数没有正确保存它们的类型,所有数字都作为浮点数传入,并且在插入 Mongo 之后,数据被保存为浮点数。可以理解,这是由于使用 JSON 作为数据持有者时对输入的限制。

由于 JSON 数据没有明确定义并且可能包含不同类型的嵌套动态对象,因此为这个问题创建结构似乎不是一个可行的选择。

我研究了一些选项,包括迭代 JSON 数据和使用 UseNumbers() 进行解码,但我面临的问题是操作可能很昂贵,因为一些 JSON 数据可能包含数百个字段和反射在处理请求时,这些字段可能会导致速度变慢,尽管我不知道性能影响会有多大。

标签: jsonmongodbgo

解决方案


推荐阅读