PHP JSON大整数

4

我正在使用json_encode将我的php多维数组转换为输出json。通常,该函数会将所有值转换为字符串。为了确保整数值作为整数值发送到javascript,我正在使用数字检查:

$json = json_encode($data, JSON_NUMERIC_CHECK);

这对我的应用程序在大多数情况下都可以正常工作。在php数组中(从数据库提取),有一个包含非常大整数的字段。我将它保存为VARCHAR类型,但不幸的是,在编码为json时,它被转换为整数。问题在于,由于这是一个非常大的整数,它会被四舍五入,因此不能表示真实值。如何解决这个问题呢?


3
PHP 5.4有JSON_BIGINT_AS_STRING选项,这可能正是您想要的。 - Francis Avila
谢谢您的建议,看起来它可以解决v5.4的问题。然而,我正在使用v5.3,所以希望能找到这个版本的解决方案。 - Bjorn
似乎常量只适用于json_decode函数。 - Bjorn
也许有趣?在PHP中处理由FQL返回的大用户ID - Ryan Vincent
2个回答

0
也许已经晚了,但我遇到了同样的问题,并且由于必须使用该版本运行的旧代码,我被困在服务器上的PHP 5.3上。我使用的解决方案很愚蠢,但对我有效:只需在从数据库读取的长整数末尾添加一个空格字符,然后在发送到json编码之前使用JSON_NUMERIC_CHECK进行编码。

0

您想将大数字转换为整数吗?您的问题让我觉得您不需要这样做。如果是这种情况,请从调用中删除JSON_NUMERIC_CHECK选项,它就不会改变字段的编码。

有关此(和其他)常量的文档在这里


感谢你的回答。你的解决方案确实可以解决问题,但是这样我就必须手动将所有其他值转换为整数。我正在寻找一种避免这种情况的解决方案。 - Bjorn
你正在使用哪个版本的PHP? - Thomas
那么看起来你遇到了类似于https://dev59.com/EXVC5IYBdhLWcg3wsTZi的问题。当然,这个问题是关于数学函数中的大整数的。然而,这里的一些建议很容易被转化为解决你的问题。 - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接