Php JSON编码的最佳格式?
我不熟悉PHP和JSON,但我的Android项目需要它 我不知道哪种JSON格式是最有效的。我看到的大多数示例都使用以下代码使用关联数组:Php JSON编码的最佳格式?,php,android,json,Php,Android,Json,我不熟悉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 {"conta
$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]
的编号数组
那么,哪一个更好呢?或者其他选择
谢谢为什么不使用mysql_fetch_array() 为什么不使用mysql_fetch_array() 并不是一种方法比另一种更“有效”,而是它们有不同的用途。一个是关联对象,另一个是索引数组 在您的例子中,看起来您需要一个对象列表(索引数组)。因此,我建议大家:
$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"}]}
这并不是说一种方法比另一种更“有效”,它们有不同的用途。一个是关联对象,另一个是索引数组 在您的例子中,看起来您需要一个对象列表(索引数组)。因此,我建议大家:
$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"}]}
一个具有关键联系人的对象,可能包含联系人对象数组
带有关键联系人的对象可能包含联系人对象数组?您也可以硬编码(没有mysql_fetch_array()好)
您也可以通过硬编码来实现(不如mysql_fetch_array()tho好)
我尝试使用
mysql\u fetch\u array()
,但它两次返回同一行。所以它给了我{“联系人”:[[“1”,“Andy”],[“1”,“Andy”]}
刚刚意识到我使用了mysql\u fetch\u array()
错误的方法。我按照supericy的回答进行了操作,我尝试使用mysql\u fetch\u array()
但是它两次返回同一行。所以它给了我{“联系人”:[[“1”,“Andy”],[“1”,“Andy”]}
刚刚意识到我使用了mysql\u fetch\u array()
错误的方法。我遵循上级的回答,它起作用了谢谢,它起作用了。但是在Android中,我是否使用getJSONArray()
而不是getJSONObject()
方法来读取它?ThanksI以前没有使用过android,但我猜你应该调用JSONArray people=(新的JSONObject(json_str)).getJSONArray(“contact”)
,然后在一个调用people.getJSONObject(i)
的循环中对其进行迭代,谢谢。但是在Android中,我是否使用getJSONArray()
而不是getJSONObject()
方法来读取它?ThanksI以前没有使用过android,但我猜你应该调用JSONArray people=(新的JSONObject(json_str)).getJSONArray(“contact”)
,然后在循环中调用people.getJSONObject(i)
提醒!PHP的下一个主要版本是弃用mysql\uz
函数系列。现在是进行or的好时机。@Charles谢谢,mysqli\u result::fetch\u array
可以采用与mysql\u fetch\u array
相同的参数吗?我对PHP非常陌生,所以我不太了解docsSame参数,顺序不同——连接总是在mysqli
中排在第一位。如果您打算使用mysqli而不是PDO,请务必阅读。使用它们比PDO中的更痛苦。@Charles谢谢,我会抬头看看的!PHP的下一个主要版本是弃用mysql\uz
函数系列。现在是进行or的好时机。@Charles谢谢,mysqli\u result::fetch\u array
可以采用与mysql\u fetch\u array
相同的参数吗?我对PHP非常陌生,所以我不太了解docsSame参数,顺序不同——连接总是在mysqli
中排在第一位。如果您打算使用mysqli而不是PDO,请务必阅读。使用它们比PDO中的更痛苦。@Charles谢谢,我会看看的。我不知道我们能做到。我遵守了上级的规定,这很有效。谢谢,我不知道我们能做到。我遵守了上级的规定,这很有效。谢谢你的回答。但我会使用supericy代码,因为它工作正常,看起来很干净。谢谢你的回答。但我会使用supericy代码,因为它可以工作并且看起来更干净