C#:如何将CSV经纬度列转换为嵌套列表格式的JSON
解决方案
你需要生成包含Coord键的JSON结构,其值为二维坐标列表。调整代码逻辑,直接构建符合要求的结构即可:
// 加载CSV文件并转换为DataTable WorkBook workbook = WorkBook.LoadCSV("C:\\local\\Test\\Test.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ","); WorkSheet ws = workbook.DefaultWorkSheet; DataTable dt = ws.ToDataTable(true); // 初始化二维列表存储坐标对 List<List<double>> coordPairs = new List<List<double>>(); // 遍历每一行数据,提取Lat和Lng并组装成子列表 foreach (DataRow dr in dt.Rows) { // 转换为数值类型,确保JSON输出是数字而非字符串 if (double.TryParse(dr["Lat"].ToString(), out double lat) && double.TryParse(dr["Lng"].ToString(), out double lng)) { coordPairs.Add(new List<double> { lat, lng }); } } // 构建API要求的结构 var apiRequestData = new { Coord = coordPairs }; // 序列化为目标JSON格式 string jsonOutput = JsonConvert.SerializeObject(apiRequestData); Console.WriteLine(jsonOutput);
关键调整说明
- 放弃字典列表的生成逻辑,直接构建二维列表存储每个[纬度, 经度]对
- 用匿名类封装成API需要的
{"Coord": [...]}顶层结构 - 添加
double.TryParse做类型转换校验,避免CSV数据格式异常导致报错 - 确保输出的JSON中坐标是数值类型,而非字符串(API通常要求数值格式)
内容的提问来源于stack exchange,提问作者CGarden
相关产品推荐
相关产品推荐

