json数组响应

vkc1a9a2  于 2021-06-25  发布在  Mysql
关注(0)|答案(5)|浏览(301)

在这个服务中,我得到了输出,但我想要不同的输出。让我解释一下:

$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"
    ]
}

}
但我想要这样的输出!

{"data":[{"category":"Hotel"},{"category":"Saloon"}]}
yvfmudvl

yvfmudvl1#

将每个类别添加为单独的json对象,然后:

while ($array = mysqli_fetch_assoc($qry_res)) {
    foreach ($array['category'] as $categoryName) {
        $jsonData[] = ['category' => $categoryName];
    }
}

这样你就得到了一个对象数组,所以你应该很好。

s5a0g9ez

s5a0g9ez2#

键应该是唯一的,不应该重复“category”作为键。
“名称都是唯一的对象是可互操作的,因为接收该对象的所有软件实现都将同意名称-值Map。当对象中的名称不唯一时,接收此类对象的软件的行为是不可预测的。”
看到了吗https://tools.ietf.org/html/rfc7159 用于json定义。
如您所见,json_encode使用了这个rfc:“php实现了一个json的超集,正如在原始代码中指定的那样» rfc 7159。”
如果你真的想写非唯一的键,你应该写你的自定义json编码函数,但是解码函数会有不可预知的行为。

a5g8bdjr

a5g8bdjr3#

你不能得到你想要的,因为你会有一个数组有两个相同的键。你可以通过改变得到类似的东西:

$r= $array['category'];
$jsonData[]=explode(",",$r);

foreach (explode(',', $array['category']) as $cat) {
    $jsonData[]=array('category' => $cat);
}
``` `$jsonData` 将如下所示:

Array
(
[data] => Array
(
[0] => Array
(
[category] => Hotel
)
[1] => Array
(
[category] => Saloon
)
)
)

以及 `json_encode` 将:

{"data":[{"category":"Hotel"},{"category":"Saloon"}]}

6yt4nkrj

6yt4nkrj4#

数组的键必须是唯一的

db2dz4w8

db2dz4w85#

while($array=mysqli\u fetch\u assoc($qry\u res)){

$jsonData[]=$array;

}
echo json_encode(array('data' =>$jsonData));

相关问题