[英]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.