2016-05-19 61 views
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完全失敗。

我該如何正確處理這種情況?看來我的選擇是

  1. 不知何故告訴PHP「1e3673」不是一個數字。
  2. 停止使用JSON_NUMERIC_CHECK。這會讓API真的很煩人,用於很多語言(例如Javascript),並且看起來像是處理這個狹窄角落案例的可怕方式。
  3. 寫我自己的JSON編碼器,以避免這個問題。

我寧願#1,但如果這是必要的,我打開#3。或者也許有另一種方式?

+4

4.表示顏色爲'#1e3673'或'0x1e3673'。 – CompuChip

+0

'2'!您必須能夠使用'「00012」'或'「11.09」'字符串進行響應。只要檢查你的方法來回應正確的類型。 –

+0

我無法在這裏重現「垂死」。 PHP 5.6和7.0都可以按照我的預期工作。 – miken32

回答

相關問題