You need to enable JavaScript to run this app. 如何对JSON中的多个数字执行前8位隐藏、编码及加密处理
优惠活动
大模型
产品
解决方案
定价
更多

如何对JSON中的多个数字执行前8位隐藏、编码及加密处理

账号串行批量处理实现方案

核心执行逻辑

完全匹配你要求的“单元素全流程处理完成后再处理下一个”的串行规则,整体流程拆解为固定流水线:

  • 从给定JSON结构中定位目标数组,即Body.AccNum对应的账号字符串列表,先做列表非空校验
  • 按数组原始顺序逐一遍历元素,严格等当前元素的全流程操作执行完毕,再启动下一个元素的处理,杜绝并发导致的顺序混乱、流程错配问题
  • 单个账号的固定处理步骤(顺序不可调换):
    • 前8位隐藏:将账号字符串的前8个字符统一替换为*占位符,保留剩余位置的可见内容。例如原账号000405010255,隐藏后结果为********10255;若账号长度不足8位,则直接全部替换为*避免越界
    • 编码操作:对隐藏后的字符串执行你业务规定的编码规则(如Base64、URL编码等)
    • 加密操作:对编码后的字符串执行你业务规定的加密规则(如AES、SM4等)
  • 所有元素处理完成后,统一收集最终加密结果,可按需做持久化存储、接口返回等后续操作

可直接复用的代码示例

Python 版本

import json
import base64
# 原始JSON数据
raw_json_str = '''{
    "Body": {
        "AccNum": [
            "000405010255",
            "000405010310",
            "000405009777",
            "000401109537",
            "000401113460",
            "000401116861",
            "001805015288",
            "628801537715",
            "000319000184",
            "000401193586",
            "000405111139",
            "000405501186",
            "000760004994",
            "000805015689",
            "000813001320",
            "001105024982",
            "001801080623",
            "001810042371",
            "001825075268",
            "004214109637",
            "004214109638",
            "010310000278",
            "032501004151",
            "044205008102",
            "105701000275",
            "630010075140"
        ]
    }
}'''
# 自定义加密方法,替换为你实际的业务加密逻辑
def custom_encrypt(content: str) -> str:
    # 此处占位,实际替换为项目内加密实现
    return f"encrypted_{content}"

def process_single_account(acc_str: str) -> str:
    # 1. 隐藏前8位
    hidden_content = "*" * 8 + acc_str[8:] if len(acc_str) >=8 else "*" * len(acc_str)
    # 2. 执行编码(此处以UTF-8 Base64编码为例,替换为实际编码逻辑)
    encoded_content = base64.b64encode(hidden_content.encode("utf-8")).decode("utf-8")
    # 3. 执行加密
    final_content = custom_encrypt(encoded_content)
    return final_content

if __name__ == "__main__":
    # 解析JSON
    parsed_data = json.loads(raw_json_str)
    acc_list = parsed_data["Body"]["AccNum"]
    process_result = []
    error_list = []
    # 串行遍历处理
    for acc in acc_list:
        try:
            single_res = process_single_account(acc)
            process_result.append(single_res)
        except Exception as e:
            error_list.append({"acc": acc, "err_msg": str(e)})
    # 后续可对process_result、error_list做落地处理

Node.js 版本

const rawJsonStr = `{
    "Body": {
        "AccNum": [
            "000405010255",
            "000405010310",
            "000405009777",
            "000401109537",
            "000401113460",
            "000401116861",
            "001805015288",
            "628801537715",
            "000319000184",
            "000401193586",
            "000405111139",
            "000405501186",
            "000760004994",
            "000805015689",
            "000813001320",
            "001105024982",
            "001801080623",
            "001810042371",
            "001825075268",
            "004214109637",
            "004214109638",
            "010310000278",
            "032501004151",
            "044205008102",
            "105701000275",
            "630010075140"
        ]
    }
}`
// 自定义异步加密方法,替换为实际业务逻辑
const customEncrypt = async (content) => {
    return `encrypted_${content}`
}

const processSingleAccount = async (accStr) => {
    // 1. 隐藏前8位
    const hiddenContent = accStr.length >=8 ? "*".repeat(8) + accStr.slice(8) : "*".repeat(accStr.length)
    // 2. 编码(此处以Base64编码为例)
    const encodedContent = Buffer.from(hiddenContent).toString('base64')
    // 3. 加密
    const finalContent = await customEncrypt(encodedContent)
    return finalContent
}

// 主流程执行
(async () => {
    const parsedData = JSON.parse(rawJsonStr)
    const accList = parsedData.Body.AccNum
    const processResult = []
    const errorList = []
    // 注意:使用for...of + await的形式,才能保证串行执行,不能用forEach(不会等待异步操作完成)
    for (const acc of accList) {
        try {
            const singleRes = await processSingleAccount(acc)
            processResult.push(singleRes)
        } catch (e) {
            errorList.push({acc, errMsg: e.message})
        }
    }
    // 后续结果处理
})()

关键注意事项

  • 异步环境下的串行保障:如果是在JS、Python异步场景下,不要用数组自带的forEach、map等遍历方法,这类方法不会等待内部异步操作完成,会直接并发执行所有元素的处理,不符合你“处理完一个再下一个”的要求,必须用普通for循环搭配await实现严格串行
  • 异常兜底:单元素处理逻辑需要加独立的异常捕获,避免单个账号格式错误、加密接口异常导致整个批量流程中断,失败的元素单独记录便于后续重试
  • 边界兼容:对长度不足8位的账号做特殊处理,避免字符串切片时出现索引越界的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.26 22:24:04