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

多级JSON解析:如何从指定JSON中提取目标文本?

提取多级JSON中指定文本的简单方法

嘿,我明白你卡在多级JSON结构的遍历上了!针对你要提取"Testing"、"Testing2"这类文本的需求,嵌套的foreach循环就是最简单直观且易维护的解决方案,完全适配你提到的代码思路。

第一步:确保JSON已正确解析

首先要把接口返回的JSON字符串转换成PHP可操作的结构:

  • 用json_decode($response_str)会得到对象结构
  • 用json_decode($response_str, true)会得到关联数组结构

两种结构的遍历写法略有不同,下面分别给出示例:

情况1:对象结构(默认解析方式)

假设你的$response是解析后的对象,data是数组,每个元素里的comments又是包含目标文本的数组:

foreach ($response->data as $res) {
    // 遍历当前item下的所有comments
    foreach ($res->comments as $comment) {
        // 输出你要的文本(对应"Testing"、"Testing2"的字段,这里假设是text)
        echo $comment->text . PHP_EOL;
    }
}

情况2:关联数组结构(解析时加true参数)

如果你转成了关联数组,写法调整为数组下标访问:

foreach ($response['data'] as $res) {
    foreach ($res['comments'] as $comment) {
        echo $comment['text'] . PHP_EOL;
    }
}

可选:添加健壮性判断

如果JSON里可能存在comments为空、字段缺失的情况,建议加判断避免报错:

foreach ($response->data as $res) {
    // 先检查comments是否存在且是有效数组
    if (isset($res->comments) && is_array($res->comments)) {
        foreach ($res->comments as $comment) {
            // 确保text字段存在再输出
            if (isset($comment->text)) {
                echo $comment->text . PHP_EOL;
            }
        }
    }
}

为什么选嵌套foreach?

虽然递归函数(比如array_walk_recursive)也能遍历多级结构,但它会遍历所有层级的键值,容易拿到不需要的内容。而嵌套foreach只针对你明确需要的层级处理,逻辑更清晰,调试也更方便,完全符合你想要的简单操作需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:19:44