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

如何使用非递归迭代函数提取JSON文件中所有键为text的对应值?

迭代提取嵌套JSON中所有text键值的方案

核心思路

采用栈实现的深度优先迭代遍历,全程无递归,避免递归栈溢出风险,同时省去JSON序列化的额外性能开销,处理大型JSON文件的效率远高于JSON.stringify替换器方案。

实现代码

function extractAllText(jsonObj) {
  const textList = []
  const stack = [jsonObj]

  while (stack.length) {
    const currNode = stack.pop()
    // 跳过基础类型和null
    if (typeof currNode !== 'object' || currNode === null) continue
    // 匹配到text键就收集值,也可加&& currNode.type === 'text' 精准匹配示例结构
    if ('text' in currNode) {
      textList.push(currNode.text)
    }
    // 把当前节点的子内容压入栈待遍历
    stack.push(...(Array.isArray(currNode) ? currNode : Object.values(currNode)))
  }
  // 按需求用换行拼接结果
  return textList.join('\n')
}

// 调用示例
const obj = JSON.parse(content)
const ret = extractAllText(obj)

方案优势

  • 纯迭代实现,无递归深度限制,可处理任意层级的嵌套JSON
  • 没有额外序列化开销,大型文件处理性能比原有方案提升数倍
  • 逻辑灵活可扩展,可随时增加过滤条件适配不同JSON结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:06:03