Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON编码的最佳格式?_Php_Android_Json - Fatal编程技术网

Php 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

我不熟悉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"}}
我喜欢这种格式,但我不知道如何使每个键包含多个值。因此,当我的查询返回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代码,因为它可以工作并且看起来更干净