I'm trying to return some fields (e.g. cellPhone
, mainAddress
, cityStateZip
, serverSetup
) from below function based on input, and I have implemented an interesting switch statement, but clearly I'm returning a string in all cases.
public static string JsonToObjects(bool Enumerate, string jsonInputFile)
{
string inputFile = Path.GetFileName(jsonInputFile); // Return File Name + Extension
var lines = GetLines(File.ReadAllText(jsonInputFile));
var groups = lines.GroupByProximity(0.12);
var lookup = groups.ToLookup(g => g.First().Text, g => g.Skip(1).Select(line => line.Text));
var serverSetup = lookup["Server Setup"]
.First().SkipWhile(s => s.ToString().ToUpper() != "V").Skip(1).FirstOrDefault();
switch (Enumerate)
{
case true:
Log("\nEnumerating JSON items...\n");
var cellPhone = lookup["Cell Phone"].First().FirstOrDefault();
var mainAddress = lookup["Main Address"].First().FirstOrDefault();
var cityStateZip = lookup["City / State / Zip"].First().FirstOrDefault();
Log(cellPhone);
Log(mainAddress);
Log(cityStateZip);
Log(serverSetup);
Log("\n");
var pairs = lines.SkipWhile(l => l.Text != "Practice Name").Pairs();
// Ingest the lines in pairs and setup the values to go out into the CSV.
foreach (var pair in pairs)
{
Log($"{pair.Key}: {pair.Value}");
return $"{pair.Key}: {pair.Value}";
}
break;
case false:
Log("Using Cho Package...");
using (var p = new ChoJSONReader(jsonInputFile).WithJSONPath("$..readResults")) // "readResults": [
{
p.Where(r1 => r1.page == 1)
.Select(r1 =>
{
var lines = (dynamic[])r1.lines;
return new
{
FileName = inputFile,
Page = r1.page,
CellPhone = //lines[12].text,
fieldValue(lines, "Cell Phone"),
//cellPhone,
MainAddress = //lines[16].text,
fieldValue(lines, "Main Address"),
//mainAddress,
CityStateZip = //lines[18].text,
fieldValue(lines, "City / State / Zip"),
//cityStateZip,
ServerSetup = serverSetup
};
}
);
}
break;
default:
Log("Default case");
return "Default case";
break;
}
}
Why then am I still getting an error:
"Not all code paths return a value"