3
我正在編寫一個API。 API始終返回JSON。在內部,該響應數據是轉換爲JSON像這樣的數組:如何在PHP中正確使用json_encode [「number」=> 12,「color」=>「1e3673」]?
<?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完全失敗。
我該如何正確處理這種情況?看來我的選擇是
- 不知何故告訴PHP「1e3673」不是一個數字。
- 停止使用JSON_NUMERIC_CHECK。這會讓API真的很煩人,用於很多語言(例如Javascript),並且看起來像是處理這個狹窄角落案例的可怕方式。
- 寫我自己的JSON編碼器,以避免這個問題。
我寧願#1,但如果這是必要的,我打開#3。或者也許有另一種方式?
4.表示顏色爲'#1e3673'或'0x1e3673'。 – CompuChip
'2'!您必須能夠使用'「00012」'或'「11.09」'字符串進行響應。只要檢查你的方法來回應正確的類型。 –
我無法在這裏重現「垂死」。 PHP 5.6和7.0都可以按照我的預期工作。 – miken32