public static string CsvToJson(this string value)
{
if (value == null)
{
return null;
}
var lines = value.Split(new string[] {Environment.NewLine}, StringSplitOptions.RemoveEmptyEntries);
if (lines.Length < 2)
{
throw new Exception("Must have header line.");
}
var headers = lines.First().Split(',');
var stringBuilder = new StringBuilder();
stringBuilder.AppendLine("[");
for (var i = 1; i < lines.Length; ++i)
{
var fields = lines[i].Split(',');
if (fields.Length != headers.Length)
{
throw new Exception("Field count must match header count.");
}
var jsonElements = headers.Zip(fields, (header, field) => string.Format("{0}: {1}", header, field)).ToArray();
var jsonObject = "{" + string.Format("{0}", string.Join(",", jsonElements)) + "}";
if (i < lines.Length - 1)
{
jsonObject += ",";
}
stringBuilder.AppendLine(jsonObject);
}
stringBuilder.AppendLine("]");
return stringBuilder.ToString();
}