我正在为我的网站创建一个API。API将被其他开发者或Android应用程序使用。我有两种数据结构:
一个:
$iterator = 0;
while (($end = $sth->fetch()) && $iterator < 2)
{
$api_arr["data"][] = array(
"id" => $end["id"],
"title" => $end["title"],
"content" => $end["content"] );
$iterator ++;
}
/* Output: ------------ print_r($api_arr); -------------------
Array
(
[data] => Array
(
[0] =>
(
[id] => value_id_1
[title] => value_title_1
[content] => value_content_1
)
[1] =>
(
[id] => value_id_2
[title] => value_title_2
[content] => value_content_2
)
)
) */
/* Output: ------------ echo json_encode($data); -------------------
----- and using JSONveiw extension on chrome -----
{
- data: {
- 0: {
id: "value_id_1",
title: "value_title_1",
content: "value_content_1"
},
- 1: {
id: "value_id_2",
title: "value_title_2",
content: "value_content_2"
},
}
} */
两个:
$iterator = 0;
while (($end = $sth->fetch()) && $iterator < 2)
{
$api_arr["data"]['id'][] = $end["id"];
$api_arr["data"]['title'][] = $end["title"];
$api_arr["data"]['content'][] = $end["content"];
$iterator ++;
}
/* Output: ------------ print_r($api_arr); -------------------
Array
(
[data] =>
(
[id] => Array
(
[0] => value_id_1
[1] => value_id_2
[2] => value_id_3
),
[title] => Array
(
[0] => value_title_1
[1] => value_title_2
[2] => value_title_3
),
[content] => Array
(
[0] => value_content_1
[1] => value_content_2
[2] => value_content_3
)
)
) */
/* Output: ------------ echo json_encode($data); -------------------
----- and using JSONveiw extension on chrome -----
{
- data: {
- id:[
"value_id_1",
"value_id_2",
"value_id_3
],
- title:[
"value_title_1,
"value_title_2,
"value_title_3,
],
- content:[
"value_content_1",
"value_content_2",
"value_content_3
],
}
} */
那么,哪种数据结构更适合在客户端使用呢(其他网站,移动应用程序)
在第一个例子中,你模拟了一个数组的使用,而没有实际使用数组(或者至少在给定输出的情况下看起来是这样),在第二个例子中你重复信息,并迫使开发人员将所有信息放在一起。最好的解决方案是:
{
data: [
{
id: "",
title: "",
content: ""
},
{
id: "",
title: "",
content: ""
}
]
}
我认为这与你的第一个选项非常相似,但看起来插件的显示方式很糟糕。
Android开发人员喜欢这样做的主要原因是,可以使用一些库直接转换对象和json。