我有一系列我想要导入的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或{{1} }为00000所以对于上面的第一个值,我会得到1011546000,1075864000,1132356000。我不能说这个值已被修改,因为它可能是一个有效值。
如果在JSON数据中可以包含字符串e5
,我应该如何从这个JSON数据中检索正确的值(在JSON字符串中运行它之前存在于json_decode中)?
答案 0 :(得分:2)
您必须将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以获取第二个参数各种选项