格式化json数据以在lot中工作


Formatting json data to work in Flot

是否有办法转换这个json数据:

[
    {
        "year":"1999",
        "value":"3.0"
    },
    {
        "year":"2008",
        "value":"0.9"
    }
]

像这样:

{
    "data": [[1999, 3.0], [2008, 0.9]]
}

检查值的类型("3.0"和3.0,字符串和整数)。

我很难弄明白这一点,或者这是可能的。

这就是我如何获得json数据:我有"数据"表在我的数据库中有"年"answers"值"列,我从数据库中获取它们,如:

    $sql = mysql_query("SELECT * FROM data");
        $rows = array();
        while($r = mysql_fetch_assoc($sql)) {
            $rows[] = $r;
        }
        $encodedJson = json_encode($rows);
$encodedJson = json_encode($rows);
print $encodedJson;

我试图从我的数据创建一个图形,json数据必须正确格式化在Flot工作。感谢所有的帮助!

您可以对象数组映射为多维数组:

var mapped = originalData.map(function (obj) {
  return [ parseInt(obj.year, 10), parseFloat(obj.value) ];
});
var newData = {
  data: mapped
};

可能的解决方案

  var a = [
        {
            "year":"1999",
            "value":"3.0"
        },
        {
            "year":"2008",
            "value":"0.9"
        }
    ];
    var b = [];
    $.each(a, function(_index, _item){
        var c = [_item["year"], _item["value"]];
        b.push(c);
    });
console.log(b)

试试这个。PHP:

$sql = mysql_query("SELECT * FROM data");
 $rows = $sql->results_array();
$return_args = array();
foreach($rows as $row){
  $tmp[0] = $row['year'];
  $tmp[1] = $row['value'];
  array_push($return_args,$tmp);
}
 $encodedJson = json_encode($return_args);
 print $encodedJson;