1

我正在尝试返回使用带有把手的 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

4 回答 4

3

您的“todos”属性名称必须用双引号括起来。

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

尽管 JavaScript 语法允许属性名称不带引号,但严格的 JSON 坚持使用它们。

于 2012-06-28T15:30:19.990 回答
2

虽然 Pointy 的答案是正确的(可能想了解JSON),但您也可以这样做:

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

PHP 关联数组将作为对象序列化为 JSON(手册中的 json_encode() 示例)。

于 2012-06-28T15:33:20.547 回答
1

尝试:

 echo '{ "todos" : ' . json_encode($todo) . '}';
于 2012-06-28T15:31:34.140 回答
1

试试这个:

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

与其自己制作 JSON,不如制作您想要的结构,然后让 PHP 为您制作 JSON。

于 2012-06-28T15:33:34.760 回答