如何将RedCAP API返回的JSON对象转换为CSV文件
将RedCAP API返回的JSON对象转换为CSV文件(使用CsvHelper)
前提准备
确保代码中已引用以下命名空间:
using CsvHelper; using System.IO; using System.Globalization;
基础转换代码
假设result是RedCAP API返回的已反序列化对象集合(通常为IEnumerable<dynamic>或强类型实体列表),直接使用CsvHelper的WriteRecords方法即可完成转换:
// 空值检查,避免空引用异常 if (result == null || !result.Any()) { Console.WriteLine("无可用记录可导出"); return; } // 写入CSV文件 using (var streamWriter = new StreamWriter("redcap_records.csv")) using (var csvWriter = new CsvWriter(streamWriter, CultureInfo.InvariantCulture)) { csvWriter.WriteRecords(result); }
自定义CSV格式(可选)
如果需要调整分隔符、引号规则等格式,可通过CsvConfiguration配置:
var csvConfig = new CsvConfiguration(CultureInfo.InvariantCulture) { Delimiter = ";", // 改为分号分隔 QuoteAllFields = true, // 所有字段用引号包裹 TrimOptions = TrimOptions.Trim // 去除字段前后空格 }; using (var streamWriter = new StreamWriter("redcap_records_custom.csv")) using (var csvWriter = new CsvWriter(streamWriter, csvConfig)) { csvWriter.WriteRecords(result); }
注意事项
- 若
result是未反序列化的JSON字符串,需先通过RedCapAPI内置工具或序列化库(如Newtonsoft.Json)转换为对象集合,再传入WriteRecords。 - 确保目标文件路径具备写入权限,避免IO异常。
- 若使用强类型实体类,属性名称需与RedCAP表单字段名匹配;不匹配时可通过
[Name]特性映射:public class RedcapRecord { [Name("record_id")] public int RecordId { get; set; } [Name("patient_name")] public string PatientName { get; set; } }
内容的提问来源于stack exchange,提问作者Jay
相关产品推荐
相关产品推荐

