2016-01-15 3 views
0

Мое приложение имеет список отчетов, и каждый «Отчет» определяется как новый объект в PHP. Я пытаюсь создать базовый API, и я хочу показать список всех «отчетов» в 1 строке JSON. Мой код ниже хорошо работает для кодирования 1 объекта в JSON, но как я могу получить ВСЕ объекты и превратить ВСЕ их в 1 длинную строку JSON?Как преобразовать несколько объектов в 1 строку JSON в PHP

Я понимаю, что могу создать массив объектов, но это возвращает эти скобки [], и я не хочу этих скобок в строке JSON.

class report { 
    public $report_name; 
    public $report_value; 
    public $report_benchmark; 
    public $report_result; 

    public function __construct($report_name, $report_value, $report_benchmark, $report_result) { 
     $this->report_name = $report_name; 
     $this->report_value = $report_value; 
     $this->report_benchmark = $report_benchmark; 
     $this->report_result = $report_result; 
    } 
} 

$item = new report('test', 0, 0, 'OK'); 
echo json_encode($item, JSON_PRETTY_PRINT); 
+4

добавить несколько объектов в массив и 'echo json_encode ($ array);' – JimL

+0

Этот комментарий мог быть ответом на этот вопрос. Отличный @ JimL. :) –

+0

Я действительно считал это, но если я это сделаю, я получаю '[{" test ":" test "}]' и мне не нужны скобки []. – user5331188

ответ

0

Как было предложено @JimL, вы можете просто добавить некоторые объекты в массив, который вы можете кодировать как json last on.

$item = array(); 
$item[] = new report('test', 0, 0, 'OK'); 
$item[] = new report('test2', 0, 0, 'OK'); 
echo json_encode($item, JSON_PRETTY_PRINT); 

производит:

[{ 
    "report_name": "test", 
    "report_value": 0, 
    "report_benchmark": 0, 
    "report_result": "OK" 
}, { 
    "report_name": "test", 
    "report_value": 0, 
    "report_benchmark": 0, 
    "report_result": "OK" 
}] 

Отметим здесь, что вы можете проверить Производимый JSon here

+0

Но если я это сделаю, я получаю '[{" test ":" test "}]' и мне не нужны скобки []. – user5331188

+0

@ user5331188 в приведенном выше примере, он не будет действительным json в случае отсутствия скобок – Stavros

0

Вы можете сделать некоторые вещи, как это.

$item = array(); 
$item['report1'] = $item = new report('test', 0, 0, 'OK'); 
$item['report2'] = $item = new report2('test', 0, 0, 'OK'); 
$item['report3'] = $item = new report3('test', 0, 0, 'OK'); 
echo json_encode($item, JSON_PRETTY_PRINT); 

создать ассоциативный массив и добавить все объекты, которые означают полный ключ, что поможет легко получить доступ к каждому конкретному отчету.

Смежные вопросы