修改使用PDO返回的JSON对象

时间:2012-06-28 15:26:28

标签: javascript json pdo handlebars.js

我正在尝试返回使用带把手的JSON对象。制作一个小的待办事项清单,以了解如何使用它。

我的PHP API如下:

$query = "SELECT *
          FROM table";
try
{
    $db = getConnection();
    $response = $db->query($query);
    $todo = $response->fetchAll(PDO::FETCH_OBJ);
    $bdd = null;
    echo json_encode($todo);
}

然后返回如下内容:

[{"id":"1","todo":"Do something","who":"Me","is_done":"0"},{"id":"2","todo":"Learn JSON","who":"Me","is_done":"0"}]

但实际上我需要它是这样的:

{todos: [{"id":"1","todo":"Do something","who":"Me","is_done":"0"},{"id":"2","todo":"Learn JSON","who":"Me","is_done":"0"}]}

我尝试在我的PHP API中添加而不是echo json_encode($todo)

echo '{todos: ' . json_encode($todo) . '}';

但它不起作用。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

您的“待办事项”属性名称必须使用双引号字符引用。

echo '{"todos": ' . json_encode($todo) . '}';

虽然JavaScript语法允许没有引号的属性名称,但严格的JSON坚持使用它们。

答案 1 :(得分:2)

虽然Pointy的回答是正确的(可能想要阅读JSON),但您也可以这样做:

echo json_encode(array('todos' => $todo));

PHP关联数组将作为对象(json_encode() example in Manual)序列化为JSON。

答案 2 :(得分:1)

尝试:

 echo '{ "todos" : ' . json_encode($todo) . '}';

答案 3 :(得分:1)

试试这个:

echo json_encode(array( 'todos' => $todo ));

不要自己制作JSON,而是制作你想要的结构,然后让PHP为你制作JSON。