我正在向一个API发出一个post请求,它使用以下格式(列表列表)。
var data = "{\"Coord\" : [[50.452603, 30.522025],[30.621929, 31.012975]]}";
字符串
我有一个.csv文件,其中有一个纬度和纬度列,我想转换为上述JSON格式。
| Lat| LNG|
| --|--|
| 50.452603| 30.522025|
| 30.621929| 31.012975|
下面是我的代码的一个例子,但它是一个字典列表。我不知道如何修改它来创建上面的代码。
WorkBook workbook = WorkBook.LoadCSV("C:\\local\\Test\\Test.csv", fileFormat: ExcelFileFormat.XLSX, listDelimiter: ",");
WorkSheet ws = workbook.DefaultWorkSheet;
DataTable dt = ws.ToDataTable(true);
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach (DataRow dr in dt.Rows)
{
row = new Dictionary<string, object>();
foreach (DataColumn col in dt.Columns)
{
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
string json = JsonConvert.SerializeObject(rows);
Console.WriteLine(json);
}
型
1条答案
按热度按时间kr98yfug1#
这个json也兼容数组列表,我认为这在这里更有意义。我们还可以做一些其他的改进。从这个开始,它使用
Microsoft.VisualBasic.FileIO
命名空间(NuGet上有更好的csv解析器,但这是内置的):字符串
然后有一个这样的类:
型
我们可以这样使用它们:
型
请看这里:
https://dotnetfiddle.net/KAdjFK
注意,我使用了
string[]
而不是double[]
或类似的,因为这些值在json文件中最终仍然是字符串。然而,这确实会留下一些额外的引号。如果你需要在自己的程序中对数据进行进一步的处理,或者如果这些引号被证明是有效的,你可能需要将这些值解析为double
:型
但是除非你需要,否则不要做上面的事情,因为这需要大量的额外数组分配,并且由于国际化/文化问题,从字符串中解析数字并不是我们认为应该的高效或简单的操作。