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

Dart 如何从动态嵌套JSON对象中提取所有字符串生成字符串数组

动态JSON全字符串提取实现方案

实现逻辑

通过递归遍历JSON解析后的所有节点,根据节点类型做对应处理:

  • 字符串类型节点:直接存入结果数组
  • 数组类型节点:遍历所有元素逐一递归处理
  • 对象类型节点:遍历所有属性值逐一递归处理
  • 其他类型节点(数字、布尔、null等):忽略不处理

代码示例

JavaScript 实现

function extractAllStrings(target) {
    const res = []
    const traverse = (val) => {
        if (typeof val === 'string') return res.push(val)
        if (Array.isArray(val)) return val.forEach(traverse)
        if (typeof val === 'object' && val !== null) return Object.values(val).forEach(traverse)
    }
    traverse(target)
    return res
}

// 测试验证
const case1 = {
    "message": {
        "aaa": ["This is aaa"],
        "bbb": ["This is bbb"],
        "ccc": ["This is ccc", "Maybe ddd"]
    }
}
console.log(extractAllStrings(case1)) // 输出 ["This is aaa", "This is bbb", "This is ccc", "Maybe ddd"]

const case2 = {"message": {"fff": ["This is fff"]}}
console.log(extractAllStrings(case2)) // 输出 ["This is fff"]

const case3 = {"message": "This is a message"}
console.log(extractAllStrings(case3)) // 输出 ["This is a message"]

Python 实现

def extract_all_strings(target):
    res = []
    def traverse(val):
        if isinstance(val, str):
            res.append(val)
        elif isinstance(val, list):
            for item in val:
                traverse(item)
        elif isinstance(val, dict):
            for v in val.values():
                traverse(v)
    traverse(target)
    return res

# 测试验证
case1 = {
    "message": {
        "aaa": ["This is aaa"],
        "bbb": ["This is bbb"],
        "ccc": ["This is ccc", "Maybe ddd"]
    }
}
print(extract_all_strings(case1)) # 输出 ['This is aaa', 'This is bbb', 'This is ccc', 'Maybe ddd']

case2 = {"message": {"fff": ["This is fff"]}}
print(extract_all_strings(case2)) # 输出 ['This is fff']

case3 = {"message": "This is a message"}
print(extract_all_strings(case3)) # 输出 ['This is a message']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 02:45:03