我正在尝试返回使用带把手的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) . '}';
但它不起作用。有什么想法吗?
答案 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。