如何将JSON文件转换为TXT文件:详细指南与实用代码示例
在数据处理与分析中,JSON(JavaScript Object Notation)和TXT(纯文本文件)是两种常见的文件格式,JSON以结构化方式存储数据(键值对、数组等),便于机器解析;而TXT作为纯文本格式,简单通用,适合人工阅读或基础文本处理,将JSON文件转换为TXT文件,本质上是将结构化数据以非结构化的纯文本形式呈现,本文将详细介绍转换方法,涵盖手动操作、编程实现(Python/Node.js)及工具辅助,并提供实用代码示例。
理解JSON与TXT的核心差异
在转换前,需明确两者的特点:
- JSON文件:遵循严格语法,数据以键值对(如
"name": "张三")、数组(如[1, 2, 3])等形式嵌套存储,文件扩展名通常为.json可读性较好,但需通过编辑器或代码格式化才能清晰展示结构。 - TXT文件:无固定格式,仅存储纯文本(字符串、数字等),扩展名多为
.txt,可直接用记事本、文本编辑器等打开,适合存储日志、简单数据或需要人工编辑的内容。
转换的核心目标是:将JSON的结构化数据提取出来,以特定规则(如换行分隔、键值对展开)写入TXT文件。
转换方法详解
方法1:手动转换(适用于小型JSON文件)
若JSON文件较小(如配置文件、简单数据),可通过手动复制粘贴+文本编辑实现转换,步骤如下:
-
打开JSON文件:
用文本编辑器(如VS Code、Sublime Text、记事本)打开JSON文件,若结构复杂,可使用编辑器的“格式化JSON”功能(如VS Code中右键选择“格式化文档”)使结构更清晰。 -
提取文本内容:
根据需求提取目标数据:- 场景1:提取JSON中的所有文本值(忽略键和符号):例如JSON
{"name": "张三", "age": 25, "city": "北京"},可提取"张三" "25" "北京",手动整理为TXT。 - 场景2:保留键值对关系:将键和值按
键: 值格式分行,如:name: 张三 age: 25 city: 北京
- 场景1:提取JSON中的所有文本值(忽略键和符号):例如JSON
-
保存为TXT文件:
将整理后的文本另存为.txt文件(如data.txt),完成转换。
优点:无需工具,适合极小文件或简单需求;
缺点:效率低,易出错,不适用于大型或复杂JSON文件。
方法2:编程实现(适用于批量/自动化转换)
对于大型JSON文件或重复性转换需求,编程是最优解,以下以Python和Node.js为例,提供常用转换逻辑。
(1)Python实现(推荐:简洁高效)
Python内置json模块,无需额外安装库,可直接处理JSON数据,以下是几种常见转换场景的代码示例:
场景1:将JSON键值对分行写入TXT(保留结构)
假设JSON文件data.json内容为:
{
"name": "张三",
"age": 25,
"address": {
"city": "北京",
"district": "海淀区"
},
"hobbies": ["阅读", "游泳", "编程"]
}
目标:将键值对按层级分行,写入output.txt,结果如:
name: 张三 age: 25 address: city: 北京 district: 海淀区 hobbies: ['阅读', '游泳', '编程']
代码:
import json
def json_to_txt(json_file, txt_file):
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f) # 解析JSON为Python对象(dict/list)
with open(txt_file, 'w', encoding='utf-8') as f:
def write_data(obj, indent=0):
indent_str = " " * indent # 缩进符号
if isinstance(obj, dict):
for key, value in obj.items():
f.write(f"{indent_str}{key}: ")
if isinstance(value, (dict, list)):
f.write("\n")
write_data(value, indent + 1)
else:
f.write(f"{value}\n")
elif isinstance(obj, list):
f.write("[\n")
for item in obj:
if isinstance(item, (dict, list)):
write_data(item, indent + 1)
else:
f.write(f"{indent_str} {item}\n")
f.write(f"{indent_str}]\n")
else:
f.write(f"{obj}\n")
write_data(data)
# 示例调用
json_to_txt("data.json", "output.txt")
print("转换完成,结果已保存至output.txt")
场景2:提取JSON中的所有文本值(忽略结构)
若仅需JSON中的字符串值(如日志中的消息内容),可递归遍历提取:
代码:
import json
def extract_json_values_to_txt(json_file, txt_file):
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f)
values = []
def extract_values(obj):
if isinstance(obj, dict):
for value in obj.values():
extract_values(value)
elif isinstance(obj, list):
for item in obj:
extract_values(item)
elif isinstance(obj, str):
values.append(obj)
extract_values(data)
with open(txt_file, 'w', encoding='utf-8') as f:
f.write("\n".join(values))
# 示例调用
extract_json_values_to_txt("data.json", "values.txt")
print("文本值提取完成,结果已保存至values.txt")
场景3:将JSON数组逐行写入TXT(每行一个元素)
若JSON是数组格式(如[{"id": 1, "name": "A"}, {"id": 2, "name": "B"}]),可将每个数组元素作为一行TXT:
代码:
import json
def json_array_to_txt(json_file, txt_file):
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f)
if not isinstance(data, list):
raise ValueError("JSON文件根节点不是数组")
with open(txt_file, 'w', encoding='utf-8') as f:
for item in data:
f.write(f"{json.dumps(item, ensure_ascii=False)}\n") # 序列化为JSON字符串后换行
# 示例调用
json_array_to_txt("array.json", "array.txt")
print("转换完成,结果已保存至array.txt")
(2)Node.js实现(适用于前端/Node.js环境)
若项目基于Node.js,可通过内置fs(文件系统)和JSON模块实现转换,无需额外依赖。
场景1:键值对分行写入TXT(递归处理嵌套结构)
代码:
const fs = require('fs');
function jsonToTxt(jsonFile, txtFile) {
const data = JSON.parse(fs.readFileSync(jsonFile, 'utf-8'));
function writeData(obj, indent = 0) {
const indentStr = ' '.repeat(indent);
if (typeof obj === 'object' && obj !== null) {
if (Array.isArray(obj)) {
fs.appendFileSync(txtFile, '[\n');
obj.forEach(item => {
if (typeof item === 'object') {
writeData(item, indent + 1);
} else {
fs.appendFileSync(txtFile, `${indentStr} ${item}\n`);
}
});
fs.appendFileSync(txtFile, `${indentStr}]\n`);
} else {
for (const [key, value] of Object.entries(obj)) {
fs.appendFileSync(txtFile, `${indentStr}${key}: `);
if (typeof value === 'object' && value !== null) {
fs.appendFileSync(txtFile, '\n');
writeData(value, indent + 1);
} else {
fs.appendFileSync(txtFile, `${value}\n`);
}
}
}
} else {
fs.appendFileSync(txtFile, `${obj}\n`);
}
}
fs.writeFileSync(txtFile, ''); // 清空TXT文件
writeData(data);
}
// 示例调用
jsonToTxt('data.json', 'output.txt');
console.log('转换完成,结果已保存至output.txt');
场景2:JSON数组逐行写入TXT
代码:
const fs = require('fs');
function jsonArrayToTxt(jsonFile, txtFile) {
const data =


还没有评论,来说两句吧...