json数据值类型

时间:2014-12-04 11:55:55

标签: javascript php json

我想将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}]

6 个答案:

答案 0 :(得分:1)

最简单的方法是在将数据编码为JSON之前将value转换为float。

但是如果你只想在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}
]

答案 1 :(得分:1)

<?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>';
?>

Demo

答案 2 :(得分:0)

使用javascript parseFloat()函数:

e.g。

var b = parseFloat("10.00")

答案 3 :(得分:0)

我只看到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);

答案 4 :(得分:0)

preg_replace

$json = preg_replace('/"value":"(\d+\.\d+)"/', '"value":$1',$json);

答案 5 :(得分:0)

您有2个选项。

选项1。

在你的应用程序的后端(php代码)中,你可以将“value”转换为float。 E.g:

$floatValue = (float) $strValue;

选项2。

如果您无法编辑后端,请在每个“值”上使用parseFloat。它会在你的响应中产生来自字符串的浮点数。