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

如何提取JSON中sources字段URL的文件名且不修改cloud字段值

JSON字段修改操作方法

你提供的原始JSON存在语法问题,"env": "int"行末尾缺少逗号,先补上这个逗号保证JSON格式合法,否则任何JSON处理工具都无法正常解析。修正后的合法原始JSON结构如下:

{
  "cloud": "https://cloudfronturl/folder/folder",
  "env": "int",
  "sources": [
    "https://www.example.com/some.tar.gz",
    "https://www.example2.com/folder1/folder2/another.tar.gz"
  ],
  "owner": "some manager"
}

以下两种常用方法都可以实现需求,处理过程不会改动cloud等其他非sources字段的原有取值:

  • 方法一:使用jq命令行工具(适合服务器/终端快速处理)
    直接在终端执行如下命令即可,将命令中的文件路径替换为你本地的实际路径:
    jq '.sources |= map(split("/") | last)' input.json > output.json
    
    命令逻辑是遍历sources数组的每一个URL字符串,按/分割后取最后一段(也就是纯文件名)替换原数组内容,其余字段完全保留原值。
  • 方法二:使用Python原生脚本(无额外依赖,适合跨平台场景)
    新建后缀为.py的脚本文件,粘贴如下代码,替换代码里的输入输出文件路径后运行即可:
    import json
    from urllib.parse import urlparse
    
    # 读取原始JSON
    with open("input.json", "r", encoding="utf-8") as f:
        config = json.load(f)
    
    # 仅提取sources中各URL的纯文件名
    config["sources"] = [
        urlparse(item).path.rsplit("/", maxsplit=1)[-1]
        for item in config["sources"]
    ]
    
    # 写出结果
    with open("output.json", "w", encoding="utf-8") as f:
        json.dump(config, f, indent=2, ensure_ascii=False)
    

处理完成后得到的output.json内容和预期结果完全一致,sources数组内容为["some.tar.gz","another.tar.gz"],其余字段和原文件无差别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:31:09