作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
12, "color"=> "1e3673"]?-6ren"> 12, "color"=> "1e3673"]?-我正在编写 API。 API 始终返回 JSON。在内部,响应数据是一个像这样转换为 JSON 的数组: '1e3673')); 它死掉的原因是PHP认为“1e3673”是科学计数法中的数字,并将其-6ren">
我正在编写 API。 API 始终返回 JSON。在内部,响应数据是一个像这样转换为 JSON 的数组:
<?php
function toJson($responseData) {
return json_encode($responseData, JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK);
}
这确保数字在 JSON 中表示为整数(而不是字符串)。 99.9% 的情况下,这很管用。但是,它会在以下情况下死亡:
<?php
toJson(array('color' => '1e3673'));
它死掉的原因是PHP认为“1e3673”是科学计数法中的数字,并将其转换为整数。但是这个整数太大了,最后被表示为+INF,无法用JSON表示。所以 json_encode 完全失败。
我该如何正确处理这种情况?看来我的选择是
我更喜欢#1,但如果有必要,我愿意接受#3。或者也许还有其他方法?
最佳答案
原来这是一个错误,在 5.5.23+、5.6.7+、7.0+ 版本中已修复。
关于php - 如何在 PHP 中正确 json_encode ["number"=> 12, "color"=> "1e3673"]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37334390/
我是一名优秀的程序员,十分优秀!