如何实现JSON对象转name-value键值对及CSV转键值对JSON
两类格式转换实现方案
1. CSV转换为键值对结构JSON
以下为Python实现方案,依赖标准库无需额外安装:
import csv import json def csv_to_json(csv_file_path, json_file_path): # 读取CSV文件,默认取首行作为键名 with open(csv_file_path, mode='r', encoding='utf-8') as csvf: csv_reader = csv.DictReader(csvf) data = list(csv_reader) # 写入键值对结构JSON with open(json_file_path, mode='w', encoding='utf-8') as jsonf: json.dump(data, jsonf, ensure_ascii=False, indent=4) # 调用示例 csv_to_json("输入文件路径.csv", "输出文件路径.json")
说明:如果CSV没有表头,可给csv.DictReader传入fieldnames参数自定义键名
2. 现有JSON转换为name/value键值对格式
注意:你给出的预期输出外层用大括号包裹多个对象属于不合法JSON格式,以下实现会输出符合语法规范的数组格式,若需要非标准的输出样式可自行调整写文件逻辑。
待转换JSON示例
[ { "emailAddress": "Trest22@gmail.com", "loginName": "Testinguser222", "firstName": "Test222", "surName": "Test22", "primaryPhone": "", "companyId": 123445, "extracompanies": "[12311,33333]", "middleName": "Test", "mobilePhone": 6666666666, "fax": 87687687686 } ]
实现代码(Python)
import json def transform_json(input_json_path, output_json_path): # 读取原始JSON with open(input_json_path, mode='r', encoding='utf-8') as f: raw_data = json.load(f) result = [] # 遍历所有原字段,拆分生成name/value结构 for item in raw_data: for key, value in item.items(): result.append({ "name": key, "value": value }) # 输出转换后的JSON with open(output_json_path, mode='w', encoding='utf-8') as f: json.dump(result, f, ensure_ascii=False, indent=4) # 调用示例 transform_json("输入文件路径.json", "输出文件路径.json")
转换后合法输出示例
[ { "name": "emailAddress", "value": "Trest22@gmail.com" }, { "name": "loginName", "value": "Testinguser222" }, { "name": "firstName", "value": "Test222" }, { "name": "surName", "value": "Test22" }, { "name": "primaryPhone", "value": "" }, { "name": "companyId", "value": 123445 }, { "name": "extracompanies", "value": "[12311,33333]" }, { "name": "middleName", "value": "Test" }, { "name": "mobilePhone", "value": 6666666666 }, { "name": "fax", "value": 87687687686 } ]
内容的提问来源于stack exchange,提问作者Sudheer
相关产品推荐
相关产品推荐

