【发布时间】:2019-01-15 15:08:53
【问题描述】:
我想使用 c# 将我的 csv 文件转换为 .json 格式。这是我尝试过的:
var lines = @"text,intentName,entityLabels
1,2,null
2,1,null".Replace("\r", "").Split('\n');
var csv = lines.Select(l => l.Split(',')).ToList();
var headers = csv[0];
var dicts = csv.Skip(1).Select(row => Enumerable.Zip(headers, row,
Tuple.Create).ToDictionary(p => p.Item1, p => p.Item2)).ToArray();
string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(dicts);
Result1.Text = json;
结果是:
[
{
"text":" 1",
"intentName":"2",
"entityLabels":"null"
},
{
"text":"2",
"intentName":"1",
"entityLabels":"null"
}
]
这几乎和我预期的一样,但是如果 entityLabels 列为空,我想将其替换为 []。所以我期望的输出是:
[
{
"text":" 1",
"intentName":"2",
"entityLabels":[]
},
{
"text":"2",
"intentName":"1",
"entityLabels":[]
}
]
有人知道怎么做吗?
【问题讨论】:
-
空数组仍然是数组,而不是
null值。如果要为缺少的entityLabels生成一个空数组,则必须用数组替换空值 -
BTW
JavaScriptSerializer是一个不应使用的过时类。它是近十年前创建的,使用不再有效的约定,例如日期。最流行的库是 JSON.NET。甚至 ASP.NET Web API 和 ASP.NET Core 项目都可以开箱即用地使用它 -
这适用于当前示例,但它将如何处理给定的 entityLabels 数据。它在 csv 中会是什么样子?