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

如何用PowerShell从已有JSON文件生成指定字段的新JSON文件

提取JSON指定字段生成新JSON文件的解决方案

需求说明

从给定的npm audit JSON报告中提取指定字段(name、severity、range、cwe、cvss、fixAvailable),同时保留原有的auditReportVersion字段,生成仅包含目标字段的新JSON文件。

实现步骤(Node.js脚本)

使用Node.js编写脚本处理JSON文件是最直接的方式,以下是具体实现:

  1. 准备文件

    • 将原始JSON数据保存为original-audit.json
    • 创建脚本文件extract-fields.js
  2. 脚本代码

const fs = require('fs');

// 读取原始JSON文件
const rawContent = fs.readFileSync('./original-audit.json', 'utf8');
const auditResult = JSON.parse(rawContent);

// 定义需要保留的目标字段
const targetFields = ['name', 'severity', 'range', 'cwe', 'cvss', 'fixAvailable'];

// 处理漏洞条目,提取目标字段
const filteredVulnerabilities = {};
for (const [pkgKey, pkgInfo] of Object.entries(auditResult.vulnerabilities)) {
  const filteredInfo = {};
  
  // 提取顶层存在的目标字段
  targetFields.forEach(field => {
    if (pkgInfo[field] !== undefined) {
      filteredInfo[field] = pkgInfo[field];
    }
  });
  
  // 从via数组中补充cwe和cvss(如果顶层没有的话)
  if (!filteredInfo.cwe && pkgInfo.via?.length) {
    filteredInfo.cwe = pkgInfo.via[0].cwe;
  }
  if (!filteredInfo.cvss && pkgInfo.via?.length) {
    filteredInfo.cvss = pkgInfo.via[0].cvss;
  }
  
  filteredVulnerabilities[pkgKey] = filteredInfo;
}

// 构建最终的JSON结构
const finalResult = {
  auditReportVersion: auditResult.auditReportVersion,
  vulnerabilities: filteredVulnerabilities
};

// 写入新文件(格式化输出便于阅读)
fs.writeFileSync('./filtered-audit.json', JSON.stringify(finalResult, null, 2));
console.log('处理完成,已生成filtered-audit.json');
  1. 运行脚本
    在终端执行命令:
node extract-fields.js

脚本说明

  • 自动保留auditReportVersion字段,与原始报告版本一致
  • 优先提取漏洞条目中顶层的目标字段,若顶层不存在cwe/cvss,则从via数组的第一个条目里补充
  • 生成的JSON文件会自动格式化,可读性更强
  • 若某个漏洞条目缺少指定字段,该字段会被自动忽略,不会出现在结果中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:32:34