You need to enable JavaScript to run this app. 如何在JavaScript中将行式JSON文本文件转换为标准合法JSON格式
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中将行式JSON文本文件转换为标准合法JSON格式

逐行JSON文件转标准JSON/CSV的实现方案

你目前写的开头代码不符合需求,你要处理的每行是独立的JSON结构,不需要按空格拆分,应该直接对每行做JSON解析,具体实现步骤如下:

转换为标准JSON格式

你需要拆分换行后过滤空行,再逐行解析为JSON对象,最终得到标准的JSON数组,实现代码如下:

const standardJson = str.split('\n')
  // 过滤掉首尾空行、以及内容全为空白的行
  .filter(line => line.trim())
  // 逐行解析为JSON对象
  .map(line => JSON.parse(line));

// 如果需要输出为格式化的JSON字符串,可以调用JSON.stringify
const formattedJsonStr = JSON.stringify(standardJson, null, 2);
console.log(formattedJsonStr);

输出的结果就是符合规范的JSON数组,你示例的内容转换后如下:

[
  {"id":819827,"nm":"Razvilka","lat":55.591667,"lon":37.740833,"countryCode":"RU"},
  {"id":524901,"nm":"Moscow","lat":55.752220,"lon":37.615555,"countryCode":"RU"},
  {"id":1271881,"nm":"Firozpur","lat":27.799999,"lon":76.949997,"countryCode":"IN"}
]

转换为CSV格式

在解析得到标准JSON数组的基础上,提取表头和每行内容拼接即可得到CSV,实现代码如下:

// 先解析得到标准JSON数组
const dataList = str.split('\n')
  .filter(line => line.trim())
  .map(line => JSON.parse(line));

// 提取表头:取第一个元素的所有键拼接为逗号分隔的字符串
const csvHeader = Object.keys(dataList[0]).join(',');
// 提取内容行:每个元素的所有值拼接为逗号分隔的字符串
const csvRows = dataList.map(item => Object.values(item).join(','));
// 拼接表头和内容行得到完整CSV字符串
const csvStr = [csvHeader, ...csvRows].join('\n');

console.log(csvStr);

你示例的内容转换后得到的CSV如下:

id,nm,lat,lon,countryCode
819827,Razvilka,55.591667,37.740833,RU
524901,Moscow,55.75222,37.615555,RU
1271881,Firozpur,27.799999,76.949997,IN
  • 注意:如果你的字段值中存在逗号、双引号、换行等特殊字符,需要给每个字段值外层包裹双引号,同时对值内部的双引号做转义处理,避免CSV格式错乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 20:45:02