12, "color"=> "1e3673"]?-6ren"> 12, "color"=> "1e3673"]?-我正在编写 API。 API 始终返回 JSON。在内部,响应数据是一个像这样转换为 JSON 的数组: '1e3673')); 它死掉的原因是PHP认为“1e3673”是科学计数法中的数字,并将其-6ren">
gpt4 book ai didi

php - 如何在 PHP 中正确 json_encode ["number"=> 12, "color"=> "1e3673"]?

转载 作者:搜寻专家 更新时间:2023-10-31 20:35:14 25 4
gpt4 key购买 nike

我正在编写 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. 以某种方式告诉 PHP “1e3673”不是数字。
  2. 停止使用 JSON_NUMERIC_CHECK。这将使 API 在与多种语言(例如 Javascript)一起使用时变得非常烦人,并且似乎是处理这种狭窄的极端情况的糟糕方法。
  3. 编写我自己的 JSON 编码器来避免这个问题。

我更喜欢#1,但如果有必要,我愿意接受#3。或者也许还有其他方法?

最佳答案

原来这是一个错误,在 5.5.23+、5.6.7+、7.0+ 版本中已修复。

https://3v4l.org/aHt34

关于php - 如何在 PHP 中正确 json_encode ["number"=> 12, "color"=> "1e3673"]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37334390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com