Создайте объект JSON с помощью PHP


Как я могу создать или создать объект JSON этого типа с помощью PHP?

{ 
    "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));
 19
Author: PhearOfRayne, 2013-12-04

5 answers

$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);
 47
Author: V G, 2013-12-04 17:53:43

Попробуйте использовать это

$arrayDateAndMachine = array(   array("1999","3.0"), 
                                array("2000","3.9")
                                );
 6
Author: A.M.N.Bandara, 2013-12-04 17:51:52

Квадратные скобки [] в 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));
 4
Author: adam187, 2013-12-04 18:02:34

Я предпочитаю следующий синтаксис, который дает желаемый результат и понятен для чтения:

$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", вы можете окружить эти значения кавычками.

 0
Author: Nik, 2017-05-24 10:04:27

Выполнение чего-то подобного должно сработать, если вы хотите объявить его только как 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]
]}';
 0
Author: surrealcoder, 2017-09-28 16:51:07