You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP Web服务返回JSON结构不符预期,请求代码修正方案

修正PHP Web服务的JSON输出结构

我看了你的代码和需求,问题出在处理分类数据的方式上——你现在是把拆分后的分类数组直接塞进$jsonData,所以输出的是嵌套数组结构,而不是你想要的每个元素都是独立对象的数组。另外还要提醒你,原代码直接把用户输入拼进SQL语句,存在严重的SQL注入风险,我会一起帮你修正这个问题。

修改后的完整代码

$customer_id = $_POST['customer_id'];
$jsonData = array();

// 使用预处理语句避免SQL注入风险
$qry = "SELECT category FROM nesbaty_customer where c_id = ?";
$stmt = mysqli_prepare($con, $qry);
mysqli_stmt_bind_param($stmt, "s", $customer_id);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);

while ($array = mysqli_fetch_assoc($result)) {
    $categories = explode(",", $array['category']);
    // 遍历每个分类,生成{"category": "xxx"}的目标结构
    foreach ($categories as $cat) {
        $jsonData[] = array('category' => trim($cat)); // trim处理分类值前后可能的空格
    }
}

echo json_encode(array('data' => $jsonData));
mysqli_stmt_close($stmt);
mysqli_close($con);

关键修改说明

  1. SQL安全优化:替换直接拼接SQL的写法为预处理语句,通过绑定参数彻底避免SQL注入,这是Web服务开发的基础安全规范
  2. 数据结构调整:不再直接将explode得到的数组添加到$jsonData,而是遍历拆分后的每个分类值,创建包含category键的关联数组再推入目标数组,这样就能生成你需要的对象数组结构
  3. 细节优化:添加trim($cat)处理分类值前后可能存在的空格,避免输出不必要的空白字符

验证输出

修改后运行代码,返回的JSON会完全符合你的预期:

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

内容的提问来源于stack exchange,提问作者Jayvirsinh Vaghela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:51:53