Получить массив данных JSON

Я использую Slim Framework для REST API. мой tasks Маршрут определяется как:

$app->get('/tasks', 'authenticate', function() {
global $user_id;
$response = array();
$items = array();
$db = new DbHandler();
$result = $db->getAllUserTasks($user_id);
if ($result != NULL) {
foreach ($result as $rez) {
$response["error"] = false;
$response["id"] = $rez["id"];
$response["task"] = $rez["task"];
$response["status"] = $rez["status"];
$response["createdAt"] = $rez["created_at"];
$items[] = $response;
}
echoRespnse(200, $items);
} else {
$response["error"] = true;
$response["message"] = "The requested resource doesn't exists";
echoRespnse(404, $response);
}
});

Я хочу такой ответ JSON:

{
"error": false,
"tasks": [
{
"id": 1,
"task": "Complete test1",
"status": 0,
"createdAt": "2014-01-08 23:35:45"},
{
"id": 2,
"task": "Complete test2",
"status": 0,
"createdAt": "2014-01-08 23:56:52"}
]
}

Вместо этого я получаю что-то вроде:

[1] 0: { error: false "2" task: "2" status: "2" createdAt: "2" }

Что не так с моим маршрутом?

0

Решение

You need to format your array like below
if ($result != NULL) {
$response["error"] = false;
foreach ($result as $rez) {
$arr =array();
$arr["id"] = $rez["id"];
$arr["task"] = $rez["task"];
$arr["status"] = $rez["status"];
$arr["createdAt"] = $rez["created_at"];
$response['task'][] = $arr;
}
}
$item = $response;
0

Другие решения

Используете ли вы функцию PHP json_encode() ?
Я думаю, что вы не создаете строку JSON, вы, вероятно, просто выводите массив.

<?php
// your array with the JSON data
// (associative array)
// each array key is a json property and each array value is a json value.
$arr =array();
$arr["id"] = $rez["id"];
$arr["task"] = $rez["task"];
$arr["status"] = $rez["status"];
$arr["createdAt"] = $rez["created_at"];

echo json_encode($arr); // this outputs a valid JSON string.

Может быть, вы можете попробовать приведенный выше код.
И я думаю, что ваша текущая проблема в вашей функции echoRespnse.

0

По вопросам рекламы [email protected]