如何在JavaScript中读取文件并转换为JSON对象数组?
简便实现空格分隔文本转JSON对象数组
问题描述
我有如下格式的文件:
key1 key2 data1 data2 data3 data4 ...
想要读取该文件并转换为JSON对象数组,期望输出:
[{"key1": "data1", "key2": "data2"}, {"key1": "data3", "key2": "data4"}, ...]
方法一:Python 脚本(灵活通用)
几行代码就能完成转换,适合需要自定义处理逻辑的场景:
import json # 读取文件并过滤空行 with open('input.txt', 'r', encoding='utf-8') as f: lines = [line.strip() for line in f if line.strip()] # 提取表头作为键 keys = lines[0].split() # 构造JSON数组 json_array = [] for line in lines[1:]: values = line.split() # 可选:确保键值数量匹配,避免异常 if len(values) == len(keys): json_array.append(dict(zip(keys, values))) # 打印结果 print(json.dumps(json_array, indent=2, ensure_ascii=False)) # 若要写入文件,取消下方注释 # with open('output.json', 'w', encoding='utf-8') as f: # json.dump(json_array, f, indent=2, ensure_ascii=False)
方法二:命令行工具 jq(无需写代码)
熟悉命令行的话,用jq可以快速完成一次性转换:
# 假设输入文件为data.txt jq -R 'split(" ") | . as $line | if NR==1 then $keys=$line else ($keys | zip($line) | from_entries) end' data.txt | jq -s
- 第一部分
jq -R 'split(" ") | ...':按空格拆分每行,第一行保存为键数组,后续行生成对应键值对的对象 - 最后
jq -s:将所有对象合并为一个数组
内容的提问来源于stack exchange,提问作者Kerwen
相关产品推荐
相关产品推荐

