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

如何用PHP修改JSON文件中t03_action->effect内的嵌套对象

修改JSON中t03_action->effect嵌套对象的PHP实现方法

看起来你已经搞定了t05_file的数据修改,现在要处理t03_action下effect的嵌套对象,其实逻辑是相通的——核心就是精准定位到嵌套层级,再做赋值操作就行。

核心思路拆解

首先得确认你已经把JSON文件解码成关联数组(如果之前用json_decode($jsonString)得到的是对象,记得改成json_decode($jsonString, true),这样才能用数组下标访问结构)。

假设你的t03_action结构和t05_file类似,是包含data数组的格式,那可以按下面的方式操作:

完整代码示例

// 读取并解码JSON文件
$jsonString = file_get_contents('data/AA/view_data.json');
$json_data = json_decode($jsonString, true);

// 获取t03_action下data数组的长度
$count_action = count($json_data['t03_action']['data']);

// 循环修改每个data项里的effect嵌套对象
for($i = 0; $i < $count_action; $i++){
    // 示例1:修改effect中的单个属性(比如修改effect里的path)
    if(isset($json_data['t03_action']['data'][$i]['effect'])){ // 先检查结构是否存在,避免报错
        $json_data['t03_action']['data'][$i]['effect']['path'] = "../uploads/" . $id . "/";
    }

    // 示例2:替换整个effect对象(如果需要完全覆盖嵌套的JSON)
    // $json_data['t03_action']['data'][$i]['effect'] = [
    //     'key1' => '新值1',
    //     'key2' => '新值2',
    //     'path' => "../uploads/" . $id . "/"
    // ];
}

// 编码并写入文件,加上JSON_PRETTY_PRINT保持格式可读性
$newJsonString = json_encode($json_data, JSON_PRETTY_PRINT);
file_put_contents('data/AA/view_data.json', $newJsonString);

关键注意事项

  • 层级定位要准确:务必确认你的JSON结构是t03_action -> data -> [索引] -> effect,如果t03_action本身是单个对象而非数组,那循环逻辑需要调整。
  • 防止报错:用isset()先检查要修改的层级是否存在,避免因为JSON结构缺失导致代码抛出Undefined索引错误。
  • 保持格式美观:编码时加上JSON_PRETTY_PRINT参数,生成的JSON文件会保留缩进,方便后续维护查看。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:23:13