如何将结构化TXT内容通过split('\n')转换为JSON格式?
将拆分后的电影TXT字符串数组转换为JSON的具体步骤
核心步骤说明(基于固定结构TXT)
以下步骤假设你的TXT每一行遵循统一格式(例如:电影标题 (发行年份) [格式] - 主演1, 主演2),如果你的实际格式不同,只需调整正则表达式即可适配。
过滤无效行
拆分后的数组通常会包含空行、空白行,先过滤掉这些无效内容:const validLines = movieLines.filter(line => line.trim() !== '');编写匹配固定结构的正则表达式
根据你的TXT实际格式编写正则,捕获标题、年份、格式、主演四个字段。示例正则对应上面的假设格式:// 捕获组依次为:标题、年份、格式、主演列表 const moviePattern = /^(.*?)\s+\((\d{4})\)\s+\[(.*?)\]\s+-\s+(.*)$/;如果你TXT的分隔符是冒号、竖线等,直接修改正则中的分隔符号即可。
遍历解析每一行
对每一行用正则匹配,将捕获到的内容转换为结构化对象,同时处理类型转换(比如年份转数字、主演转数组):const movieList = validLines.map(line => { const match = moviePattern.exec(line); // 跳过匹配失败的行(可选:也可记录错误日志) if (!match) return null; return { title: match[1].trim(), releaseYear: parseInt(match[2], 10), format: match[3].trim(), actors: match[4].split(',').map(name => name.trim()) }; }).filter(item => item !== null); // 移除解析失败的项转换为JSON字符串
使用JSON.stringify将结构化数组转为JSON,第二个参数传null、第三个参数传数字可格式化输出:const moviesJson = JSON.stringify(movieList, null, 2);
关键注意事项
- 必须根据你的TXT实际格式调整正则表达式,比如如果标题包含括号,需要修改正则的捕获逻辑;如果年份是两位或带前缀,也要调整
\d{4}部分。 - 如果存在多行描述的电影信息(比如标题换行),需要先处理行合并逻辑,再执行上述解析步骤。
内容的提问来源于stack exchange,提问作者Ncado
相关产品推荐
相关产品推荐

