public RowItemBase Deserialize()

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}");
            }
        }