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

如何编写通用函数为JSON中所有字符串移除其中包含的#符号

实现思路
  • 由于JSON的基础数据类型只有字符串、数字、布尔值、null、对象、数组6种,只需递归遍历所有节点,按类型分别处理即可适配任意JSON结构:
    • 遇到字符串类型:执行指定的字符替换逻辑,移除所有#后返回
    • 遇到数组类型:遍历每一个元素,递归调用处理函数后返回新数组
    • 遇到对象类型:遍历所有键值对,对值递归调用处理函数后返回新对象
    • 遇到数字、布尔值、null类型:直接返回原值即可

注意:以下实现默认仅处理JSON的值,若需要同时移除键名中的#,修改对应字典/对象键的生成逻辑,对键也执行字符串处理即可

代码实现

Python 版本

import json

def process_json(value, str_handler=lambda s: s.replace("#", "")):
    # 处理字符串
    if isinstance(value, str):
        return str_handler(value)
    # 处理数组
    elif isinstance(value, list):
        return [process_json(item, str_handler) for item in value]
    # 处理对象
    elif isinstance(value, dict):
        # 需要处理键的话,将key改为str_handler(key)即可
        return {key: process_json(val, str_handler) for key, val in value.items()}
    # 其他类型直接返回
    else:
        return value

# 调用示例
if __name__ == "__main__":
    # 读取并解析JSON字符串
    raw_json_str = """你的原始JSON字符串"""
    raw_data = json.loads(raw_json_str)
    # 执行处理
    processed_data = process_json(raw_data)
    # 输出处理后的JSON字符串
    print(json.dumps(processed_data, indent=2, ensure_ascii=False))

JavaScript 版本

function processJson(value, strHandler = (s) => s.replaceAll("#", "")) {
    // 处理字符串
    if (typeof value === "string") {
        return strHandler(value);
    }
    // 处理数组
    if (Array.isArray(value)) {
        return value.map(item => processJson(item, strHandler));
    }
    // 处理对象
    if (typeof value === "object" && value !== null) {
        const result = {};
        // 需要处理键的话,将key改为strHandler(key)即可
        for (const key in value) {
            if (Object.prototype.hasOwnProperty.call(value, key)) {
                result[key] = processJson(value[key], strHandler);
            }
        }
        return result;
    }
    // 其他类型直接返回
    return value;
}

// 调用示例
const rawJsonStr = `你的原始JSON字符串`;
const rawData = JSON.parse(rawJsonStr);
const processedData = processJson(rawData);
console.log(JSON.stringify(processedData, null, 2));
扩展说明

该实现为通用逻辑,若后续需要修改字符串处理规则(比如替换其他字符、新增前缀等),仅需修改传入的字符串处理函数参数即可,无需调整递归遍历逻辑,可适配任意结构的JSON数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:45:00