in code/KustoCopyConsole/Entity/RowItems/RowItemSerializer.cs [62:105]
public RowItemBase Deserialize(string text)
{
var document = JsonDocument.Parse(text);
if (document.RootElement.TryGetProperty("rowType", out var rowTypeElement))
{
var rowTypeText = rowTypeElement.GetString()!;
if (Enum.TryParse<RowType>(rowTypeText, out var rowType))
{
var rowItemType = _rowTypeIndex[rowType];
if (document.RootElement.TryGetProperty("row", out var rowElement))
{
var rowElementText = rowElement.GetRawText();
var itemObject = JsonSerializer.Deserialize(
rowElementText,
RowItemJsonContext.Default.GetTypeInfo(rowItemType)!);
if (itemObject != null)
{
return (RowItemBase)itemObject;
}
else
{
throw new InvalidDataException(
$"Can't deserialize row: {rowElement.GetRawText()}");
}
}
else
{
throw new InvalidDataException($"Expected a property 'rowType': {text}");
}
}
else
{
throw new InvalidDataException($"Unexpected 'rowType': '{rowTypeText}'");
}
}
else
{
throw new InvalidDataException($"Expect 'rowType' JSON Property: {text}");
}
}