为什么在漂亮打印时返回 JSON 的大数字?
Why are returned JSON's big numbers rounded when pretty-printed?
我正在使用 ASP.NET 从数据库中获取一些数据的核心 Web 应用程序和 returns 序列化为 JSON 的数据传输对象。我注意到,当数据包含一个大数字(例如 70679185527693127)时,该数字在打印时会四舍五入。我使用浏览器开发工具(Firefox 和 Chrome)检查了返回的 JSON,原始数据是正确的,但在漂亮打印时不正确。我还尝试使用 this website 漂亮地打印 JSON,结果仍然相同。出于某种原因,这是我的 Kendo 网格的一个问题,我试图在其中显示数据,因为它显示了错误的舍入数据。这是为什么?我必须避免使用这么大的数字吗?
这是非常简化的 JSON:
{"Data":[{"Id":70679185527693127}],"Total":1}
这是印刷精美的版本:
{
"Data": [
{
"Id": 70679185527693130
}
],
"Total": 1
}
查看值的差异。
编辑: 将值作为字符串传递按预期工作(至少使用提到的网站)。还有一个附带问题:为什么 Kendo 网格显示漂亮的打印数据而不是解析看起来正确的原始数据?
漂亮的打印是通过JSON.parse()
+ JSON.stringify()
实现的。
您的 ID 值超过 Number.MAX_SAFE_INTEGER
,因此 JSON.parse()
可能会解析出不正确的值。
我假设 Kendo 也使用 JSON.parse()
,因此也会显示错误的值。
另请参阅了解更多信息
我正在使用 ASP.NET 从数据库中获取一些数据的核心 Web 应用程序和 returns 序列化为 JSON 的数据传输对象。我注意到,当数据包含一个大数字(例如 70679185527693127)时,该数字在打印时会四舍五入。我使用浏览器开发工具(Firefox 和 Chrome)检查了返回的 JSON,原始数据是正确的,但在漂亮打印时不正确。我还尝试使用 this website 漂亮地打印 JSON,结果仍然相同。出于某种原因,这是我的 Kendo 网格的一个问题,我试图在其中显示数据,因为它显示了错误的舍入数据。这是为什么?我必须避免使用这么大的数字吗?
这是非常简化的 JSON:
{"Data":[{"Id":70679185527693127}],"Total":1}
这是印刷精美的版本:
{
"Data": [
{
"Id": 70679185527693130
}
],
"Total": 1
}
查看值的差异。
编辑: 将值作为字符串传递按预期工作(至少使用提到的网站)。还有一个附带问题:为什么 Kendo 网格显示漂亮的打印数据而不是解析看起来正确的原始数据?
漂亮的打印是通过JSON.parse()
+ JSON.stringify()
实现的。
您的 ID 值超过 Number.MAX_SAFE_INTEGER
,因此 JSON.parse()
可能会解析出不正确的值。
我假设 Kendo 也使用 JSON.parse()
,因此也会显示错误的值。
另请参阅