0

我不熟悉 PHP 和 JSON,但我的 Android 项目需要它。

我对哪种 JSON 格式最有效感到困惑。我看到的大多数示例都使用以下代码使用关联数组:

$result = mysql_query($queryString)
while($row = mysql_fetch_assoc($result)){
    $json['contact']['ID'] = $row['ID'];
    $json['contact']['Name'] = $row['Name'];
}

格式 #1

{"contact":{"ID":"1","Name":"Andy"}}

我喜欢这种格式,但我不知道如何让每个键包含多个值。所以当我的查询返回AndyBob时,json 将只包含Bob

然后,我找到了这个 PHP 代码:

while($row = mysql_fetch_row($result)){
    $json['contact'][] = $row;
}
echo json_encode($json);

它使 json 看起来像这样:

格式 #2

{"contact":[["1","Andy"],["2","Bob"]]}

但在 Android 中,没有JSONObject方法可以getArray(). 即使有,我也想避免使用需要或被调用的编号数组。[0][1]

那么,哪一个更好呢?还是有其他选择?

谢谢

4

4 回答 4

2

并不是说一种方法比另一种更“有效”,它们的用途不同。一个是关联对象,另一个是索引数组。

在您的情况下,您似乎想要一个对象列表(索引数组)。所以我建议做的是:

$result = mysql_query($queryString)
while($row = mysql_fetch_array($result, MYSQL_ASSOC)){
    $json['contact'][] = $row;
}
echo json_encode($json);

这将导致json:

{"contact":[{"ID":"1","Name":"Andy"}, {"ID":"2","Name":"Bob"}]}
于 2012-12-18T07:57:16.063 回答
1

为什么不使用 mysql_fetch_array(); ?

于 2012-12-18T07:54:14.640 回答
1
{"contacts":[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]}

一个带有关键联系人的对象,其中可能包含一组联系人对象?

于 2012-12-18T07:57:49.070 回答
0

您也可以进行硬编码(不如 mysql_fetch_array() 好);

$result = array();
$i = 0;
while(...) {
  $result[] .= '{"id":"'.$i.'","name":"'.$fetch['name'].'"}';
  $i++;
}
echo "[".implode(',', $result)."]";
于 2012-12-18T08:00:17.607 回答