JSON编码的最佳格式?

时间:2012-12-18 07:52:55

标签: php android json

我不熟悉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]编号的数组。

那么哪一个更好?还是其他任何替代方案?

由于

4 个答案:

答案 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)."]";