PHP web服务的json数组响应
在这个服务中,我得到了输出,但我想要不同的输出。 让我解释一下:PHP web服务的json数组响应,php,mysql,json,Php,Mysql,Json,在这个服务中,我得到了输出,但我想要不同的输出。 让我解释一下: $customer_id = $_POST['customer_id']; $response = array(); $qry="SELECT category FROM nesbaty_customer where c_id='".$customer_id."' "; $qry_res=mysqli_query($con,$qry); $jsonData = array(); wh
$customer_id = $_POST['customer_id'];
$response = array();
$qry="SELECT category FROM nesbaty_customer where c_id='".$customer_id."' ";
$qry_res=mysqli_query($con,$qry);
$jsonData = array();
while ($array = mysqli_fetch_assoc($qry_res))
{
$r= $array['category'];
$jsonData[]=explode(",",$r);
}
echo json_encode(array('data' =>$jsonData));
mysqli_close($con);
我得到如下输出:
{
"data": {
"category": [
"Hotel",
"Saloon"
]
}
Array
(
[data] => Array
(
[0] => Array
(
[category] => Hotel
)
[1] => Array
(
[category] => Saloon
)
)
)
}
但我想要这样的输出
{"data":[{"category":"Hotel"},{"category":"Saloon"}]}
你不能得到你想要的,因为你会有一个数组有两个相同的键。您可以通过更改以下内容获得类似的结果:
$r= $array['category'];
$jsonData[]=explode(",",$r);
到
$jsonData
将如下所示:
{
"data": {
"category": [
"Hotel",
"Saloon"
]
}
Array
(
[data] => Array
(
[0] => Array
(
[category] => Hotel
)
[1] => Array
(
[category] => Saloon
)
)
)
而json_encode
的输出将是:
{"data":[{"category":"Hotel"},{"category":"Saloon"}]}
数组的键必须是唯一的($array=mysqli\u fetch\u assoc($qry\u res)) {
$jsonData[]=$array;
}
echo json_encode(array('data' =>$jsonData));
键应该是唯一的,您不应该重复“类别”作为键 “名称都是唯一的对象在某种意义上是可互操作的 所有接收该对象的软件实现都将同意 名称-值映射。当对象中的名称不是 唯一性,接收此类对象的软件的行为是 不可预测。” 有关JSON定义,请参阅 如您所见,使用此rfc: “PHP实现了原始»RFC 7159中指定的JSON超集。”
如果确实要编写非唯一键,则应编写自定义json编码函数,但解码函数将具有不可预测的行为。将每个类别添加为单独的json对象,然后:
while ($array = mysqli_fetch_assoc($qry_res)) {
foreach ($array['category'] as $categoryName) {
$jsonData[] = ['category' => $categoryName];
}
}
这样你就得到了一个对象数组,这样你就没事了。当你写下它时,它有重复的键类别,所以你无法得到它category是我的db表字段名这里它是同一个数组中两个元素的键Danger:你很容易受到你自己需要的元素的攻击。哦,伙计们!我想分解它将返回的两个类别在一个!!{“数据”:{“类别”:[“酒店”,“沙龙”]}这是我的输出,但我想要这个{“数据”:[{“类别”:“酒店”},{“类别”:“沙龙”}}但这就是这个代码的输出…你确定你复制的正确吗?再次告诉我上面的两行将被你的代码替换?兄弟首先理解我的查询!多个数据在一行内爆,并希望像这样分解所有数据{“数据”:[{“类别”:“酒店”},{“类别”:“沙龙”}]}我们谈论的不是数据库键,而是JavaScript对象键