簡體   English   中英

PHP json_decode將有問題的值強制轉換為字符串而不是float?

[英]PHP json_decode casting a problematic value to string instead of float?

我有一個要導入的JSON數據數組。 我稱之為非問題JSON數據的示例是:

[{
  "records": [{
    "timestamp": 1437805800,
    "Import": 1011546
  },{
    "timestamp": 1437805800,
    "Import": 1075864
  },{
    "timestamp": 1437805800,
    "Import": 1132356
  }]
}]

我遇到的問題是有時數據可能像這樣:

[{
  "records": [{
    "timestamp": 1437805800,
    "Import": 1011546e3
  },{
    "timestamp": 1437805800,
    "Import": 1075864e3
  },{
    "timestamp": 1437805800,
    "Import": 1132356e3
  }]
}]

在101546e3 = 101546x10 ^ 3的地方,這是我在json_decode的默認行為上遇到的問題,因為它將這些值強制轉換為float並在其中將e3轉換為000,或將e5轉換為00000,因此對於上面的第一個值,我會找回1011546000、1075864000、1132356000。我無法確定此值已被修改,因為它可能是有效值。

假設它可能包含字符串e ,那么我如何才能從此JSON數據中檢索正確的值(通過json_decode通過JSON_decode運行之前存在於JSON字符串中)?

您必須將JSON_NUMERIC_CHECK作為第二個參數傳遞JSON_NUMERIC_CHECK json_encode()函數

例如

$numbers = array('+123123', '-123123', '1.2e3', '0.00001');
var_dump(
 $numbers,
 json_encode($numbers, JSON_NUMERIC_CHECK)
);
echo "Strings containing improperly formatted numbers".PHP_EOL;
$strings = array('+a33123456789', 'a123');

請參閱PHP Doc以獲取第二個參數的各種選項

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM