使用PHP创建JSON对象

时间:2013-12-04 17:49:41

标签: php json

如何使用PHP实现或创建这种类型的JSON对象?

{ 
    "label": "Devices per year",
    "data": [
        [1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]
    ]
}

经过多次尝试后,我找不到解决方案。 例如,我试过这个:

$arrayDateAndMachine = array(
    "1999"=>3.0, 
    "2000"=>3.9
);   

$arr = array(
    "label" => "Devices per year", 
    "data" => $arrayDateAndMachine
);

var_dump(json_encode($arr));

5 个答案:

答案 0 :(得分:49)

$obj = new stdClass();
$obj->label="Devices per year";
$obj->data = array(
    array('1999','3.0'),
    array('2000','3.9'),
    //and so on...
);

echo json_encode($obj);

答案 1 :(得分:6)

尝试使用此

$arrayDateAndMachine = array(   array("1999","3.0"), 
                                array("2000","3.9")
                                );

答案 2 :(得分:4)

[]中的

方括号json是数组,所以你必须这样做

<?php

$arrayDateAndMachine = array( 
    array(1999, 3.0), 
    array(2000, 3.9),
);

$arr = array("label" => "Devices per year", 
             "data" => $arrayDateAndMachine);

var_dump(json_encode($arr));

答案 3 :(得分:0)

我更喜欢以下语法,它可以获得所需的结果并且可以阅读:

$ar = array(
            "label" => "Devices per years",
            "data" => array(array(1999, 3.0), array(2000, 3.9) )
        );

var_dump(json_encode($ar));

唯一的区别是输出“3.0”呈现为“3”。如果你需要尾随“.0”,你可以用引号括住这些值。

答案 4 :(得分:0)

如果您只想将其声明为JSON而不是使用json_encode,那么执行此类操作应该有效。这也消除了为内部的每个数组声明多个变量的需要。但只有当数据数组的内容是有限的时候,这才是可行的解决方案。

$json_string = '{ 
"label": "Devices per year",
"data": [
    [1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]
]}';