我想将 json 数组值从字符串更改为来自 php 脚本的浮点值。这都是字符串类型。我希望它作为浮点类型。
[{"year":"2008","value":"4169.20"},
{"year":"2009","value":"4067.50"},
{"year":"2010","value":"4848.40"},
{"year":"2011","value":"5654.80"},
{"year":"2012","value":"6071.50"}]
但我希望它看起来像。可能吗?
[{"year":"2008","value":4169.20},
{"year":"2009","value":4067.50},
{"year":"2010","value":4848.40},
{"year":"2011","value":5654.80},
{"year":"2012","value":6071.50}]
最简单的
方法是在将数据编码到 JSON 之前将value
转换为浮点数。
但是如果你只想在JS中工作:
var data = [ /* your data */ ];
data.forEach(function(item){
item.value = +item.value;
});
输出:
[
{"year":"2008","value":4169.2},
{"year":"2009","value":4067.5},
{"year":"2010","value":4848.4},
{"year":"2011","value":5654.8},
{"year":"2012","value":6071.5}
]
<?php
$data = '[{"year":"2008","value":"4169.20"},
{"year":"2009","value":"4067.50"},
{"year":"2010","value":"4848.40"},
{"year":"2011","value":"5654.80"},
{"year":"2012","value":"6071.50"}]';
$a = json_decode($data);
$b = array();
foreach ($a as $key => $v) {
$c['year'] = $v->year;
$c['value'] = (float) $v->value;
$b[] = $c;
}
echo '<pre>';
print_r(json_encode($b));
echo '</pre>';
?>
演示
使用 javascript parseFloat() 函数:
例如
var b = parseFloat("10.00")
我只看到 JS 答案。我不知道你的意图是什么,但是如果你在 PHP 中有 jsong 字符串,你可以使用这样的东西:
$json = ' [
{"year":"2008","value":"4169.20"},
{"year":"2009","value":"4067.50"},
{"year":"2010","value":"4848.40"},
{"year":"2011","value":"5654.80"},
{"year":"2012","value":"6071.50"}
]';
$jsonArray = json_decode($json);
foreach($jsonArray as $key => &$subArray)
{
$subArray->value = (float) $subArray->value;
}
echo json_encode($jsonArray);
您有 2 个选项。
选项 1.
在应用程序的后端(php 代码),您可以将"值"转换为浮点数。 例如:
$floatValue = (float) $strValue;
选项 2.
如果您无法编辑后端,请在每个"值"上使用 parseFloat。它将从响应中的字符串生成浮点数。
with preg_replace
$json = preg_replace('/"value":"('d+'.'d+)"/', '"value":$1',$json);