• 多个JSON文件中目标Key值检索


    摘要:工作中需要将Excel中的文件名,与JSON文件逐个匹配,并查找其中目标key的值是否满足条件,尝试写了个JS脚本实现下...

    1. 安装xlsx库

            首先,需要安装xlsx库,允许用户在Node.js和浏览器环境中读写Excel文件。安装步骤简单

    npm install xlsx

    2. 创建脚本逐步实现功能

    2.1 从Excel文件读取文件名并与JSON文件匹配

            由于Excel中文件名称不完整,需要处理后,才能与JSON文件名称正确匹配

    1. // 从Excel文件读取文件名模式
    2. async function getFileNamesFromExcel(excelFilePath) {
    3. // 读取Excel文件
    4. const workbook = XLSX.readFile(excelFilePath);
    5. // 获取第一个工作表
    6. const sheetName = workbook.SheetNames[0];
    7. const sheet = workbook.Sheets[sheetName];
    8. // 将工作表转换为JSON对象数组
    9. const data = XLSX.utils.sheet_to_json(sheet, { header: 1 });
    10. // 提取文件名列的值作为文件名模式数组
    11. const patterns = data.map(row => {
    12. return '前缀'+row[10]+ '.json';
    13. });
    14. return patterns;
    15. }
    '
    运行
    2.2 读取JSON文件检查是否满足条件

            按照Excel中匹配后的文件名,这个查找JSON文件,并判断是否满足条件

    1. // 读取并检查JSON文件
    2. async function checkSpecifiedJsonFiles(fileNamesFromExcel, configsDir) {
    3. for (const fileNameFromExcel of fileNamesFromExcel) {
    4. const jsonFileName = fileNameFromExcel; //
    5. const filePath = path.join(configsDir, jsonFileName);
    6. try {
    7. // 读取文件
    8. const content = await fs.readFile(filePath, 'utf8');
    9. const config = JSON.parse(content);
    10. // 这里定义需求:检查 "targetKey1" 和 "targetKey2" 字段
    11. const targetKey1 = config.targetKey1;
    12. const targetKey2 = config.targetKey2;
    13. if (targetKey1 === true || targetKey1 === true) {
    14. console.log(`文件 ${jsonFileName} 不满足需求。`);
    15. } else {
    16. console.log(`文件 ${jsonFileName} 满足需求。`);
    17. }
    18. } catch (error) {
    19. if (error.code === 'ENOENT') {
    20. // 文件不存在
    21. console.log(`文件 ${jsonFileName} 不存在。`);
    22. } else {
    23. // 其他错误
    24. console.error(`处理文件 ${jsonFileName} 时发生错误:`, error);
    25. }
    26. }
    27. }
    28. }
    29. // 主函数
    30. async function main() {
    31. try {
    32. const fileNames = await getFileNamesFromExcel(excelFilePath);
    33. await checkSpecifiedJsonFiles(fileNames, configsDir);
    34. } catch (error) {
    35. console.error('发生错误:', error);
    36. }
    37. }
    '
    运行

            完整脚本:

    1. const fs = require('fs').promises;
    2. const path = require('path');
    3. const XLSX = require('xlsx');
    4. // 假设Excel文件名为fileNames.xlsx, 并且JSONChecker和JSONDirector位于同一目录下
    5. const excelFilePath = '/Users/JSONChecker/fileNames.xlsx';
    6. const configsDir = '/Users/JSONDirectory'; // JSON配置文件的目录(绝对路径)
    7. // 从Excel文件读取文件名模式
    8. async function getFileNamesFromExcel(excelFilePath) {
    9. // 读取Excel文件
    10. const workbook = XLSX.readFile(excelFilePath);
    11. // 获取第一个工作表
    12. const sheetName = workbook.SheetNames[0];
    13. const sheet = workbook.Sheets[sheetName];
    14. // 将工作表转换为JSON对象数组
    15. const data = XLSX.utils.sheet_to_json(sheet, { header: 1 });
    16. // 提取row[10]列的值作为文件名模式数组
    17. const patterns = data.map(row => {
    18. return '前缀'+row[10]+ '.json';
    19. });
    20. return patterns;
    21. }
    22. // 读取并检查JSON文件
    23. async function checkSpecifiedJsonFiles(fileNamesFromExcel, configsDir) {
    24. for (const fileNameFromExcel of fileNamesFromExcel) {
    25. const jsonFileName = fileNameFromExcel; //
    26. const filePath = path.join(configsDir, jsonFileName);
    27. try {
    28. // 读取文件
    29. const content = await fs.readFile(filePath, 'utf8');
    30. const config = JSON.parse(content);
    31. // 这里定义需求:检查 "targetKey1" 和 "targetKey2" 字段
    32. const targetKey1 = config.targetKey1;
    33. const targetKey2 = config.targetKey2;
    34. if (targetKey1 === true || targetKey1 === true) {
    35. console.log(`文件 ${jsonFileName} 不满足需求。`);
    36. } else {
    37. console.log(`文件 ${jsonFileName} 满足需求。`);
    38. }
    39. } catch (error) {
    40. if (error.code === 'ENOENT') {
    41. // 文件不存在
    42. console.log(`文件 ${jsonFileName} 不存在。`);
    43. } else {
    44. // 其他错误
    45. console.error(`处理文件 ${jsonFileName} 时发生错误:`, error);
    46. }
    47. }
    48. }
    49. }
    50. // 主函数
    51. async function main() {
    52. try {
    53. const fileNames = await getFileNamesFromExcel(excelFilePath);
    54. await checkSpecifiedJsonFiles(fileNames, configsDir);
    55. } catch (error) {
    56. console.error('发生错误:', error);
    57. }
    58. }
    59. // 执行主函数
    60. main();

    3. 总结

            将Excel文件保存为fileNames.xlsx,并确保它位于脚本所在目录下。Excel文件应该有一个列row[10],其中包含需要检查的JSON文件的名称。运行上述脚本即可按照Excel中文件顺序输出结果

    node parentDirectory/JSONChecker/JSONChecker.js

  • 相关阅读:
    【安装Pytorch】
    SMARCA2抗体研究:Abnova SMARCA2 单克隆抗体方案
    四个BY的区别 HIVE中
    Rasa 3.x 学习系列-Benchmarking Language Models
    opencv编译错误记录
    Jest:JavaScript的单元测试利器
    Makefile 详解
    鸿蒙HarmonyOS实战-ArkUI组件(Button)
    安装torchtext遇到的坑及解决办法
    PTA 7-82 三个整数排序
  • 原文地址:https://blog.csdn.net/weixin_61933613/article/details/139455676