我不熟悉PHP和JSON,但我的Android项目需要它。
我对哪种JSON格式是最有效感到困惑。我看到的大多数示例都使用此代码来使用 Associative 数组:
$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"}}
我喜欢这种格式,但我不知道如何让每个键保持多个值。因此,当我的查询返回 Andy 和 Bob 时,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]
的编号的数组。
那么哪一个更好?还是其他任何替代方案?
由于
答案 0 :(得分: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"}]}
答案 1 :(得分:1)
为什么不使用mysql_fetch_array(); ?
答案 2 :(得分:1)
{"contacts":[{"id":1,"name":"Alice"},{"id":2,"name":"Bob"}]}
具有包含联系人对象数组的关键联系人的对象可能?
答案 3 :(得分:0)
你也可以硬编码(不像mysql_fetch_array()那样好。);
$result = array();
$i = 0;
while(...) {
$result[] .= '{"id":"'.$i.'","name":"'.$fetch['name'].'"}';
$i++;
}
echo "[".implode(',', $result)."]";