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

如何使用PHP正确生成符合规范格式的JSON数据

问题原因

你当前的写法是循环内对单条数据单独做JSON编码后直接拼接字符串,最终会得到多个独立JSON对象拼接的结果,缺少外层统一的大括号,也没有对象属性之间的逗号分隔,自然不符合JSON规范。
同时原有代码存在潜在报错风险:json_decode 默认返回对象,直接用$row[0]这种数组下标方式访问属性会抛出错误。

修复后代码

$url = 'data.json';
$json_string = file_get_contents($url);
// 第二个参数传true,将JSON解析为关联数组,适配后续数组下标访问逻辑
$json = json_decode($json_string, true);
$rows = $json['values'];

// 初始化空的结果数组,统一存储所有数据
$result = [];

foreach ($rows as $row) {
    // 循环内只往结果数组追加键值对,不做JSON编码
    $result[$row[0]] = [
        "name"  => $row[1],
        "value" => $row[2],
        "conso" => $row[3],
        "ml"    => $row[4]
    ];
}

// 所有数据组装完成后,一次性对整个数组做JSON编码
// 加JSON_PRETTY_PRINT参数可以输出格式化的易读JSON,不需要可以去掉
$jsonf = json_encode($result, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

效果说明

最终$jsonf就是你需要的单完整JSON对象,结构完全符合你给出的期望格式。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:36:05