public Result deserialize(String json)
        {
            if (json == null || json.Equals(""))
            {
                return null;
            }
            Result result = new Result();
            try
            {
                JObject jObject = JObject.Parse(json);
                result.Cookie = (String)jObject["cookie"];
                result.Title = (String)jObject["title"];
                result.HideCancel = (Boolean)jObject["hideCancel"];
                result.ShowBack = (Boolean)jObject["showBack"];
                JArray jArray = (JArray)jObject["resultParts"];

                foreach (JObject obj in jArray)
                {
                    int type = (int)obj["type"];
                    switch (type)
                    {
                        case 0:
                            result.ResultParts.Add((String)obj["message"]);
                            break;
                        case 1:
                            ResultList resultList = new ResultList();
                            resultList.MultiSelectionEnable = (Boolean)obj["isMultiSelection"];
                            resultList.Title = (String)obj["title"];
                            JArray records = (JArray)obj["records"];
                            if (records != null)
                            {
                                foreach (JObject jRecord in records)
                                {
                                    Record record = new Record();
                                    record.Code = (String)jRecord["code"];
                                    JArray cells = (JArray)jRecord["cells"];
                                    foreach (JObject jCell in cells)
                                    {
                                        Cell cell = new Cell();
                                        cell.Title = (String)jCell["title"];
                                        cell.Value = (String)jCell["value"];
                                        record.Cells.Add(cell);
                                    }
                                    resultList.Records.Add(record);
                                }
                            }
                            result.ResultParts.Add(resultList);
                            break;
                        case 2:
                            CommandsList commandsList = new CommandsList();
                            JArray jCommands = (JArray)obj["commandNames"];
                            if (jCommands != null)
                            {
                                foreach (JObject jCommand in jCommands)
                                {
                                    Command command = new Command();
                                    command.Name = (String)jCommand["name"];
                                    command.Code = (String)jCommand["code"];
                                    commandsList.Commands.Add(command);
                                }
                            }
                            result.ResultParts.Add(commandsList);
                            break;
                        case 3:
                            InputType inputType = new InputType();
                            inputType.Type = (int)obj["inputType"];
                            inputType.Name = (String)obj["name"];
                            inputType.Value = (String)obj["value"];
                            result.ResultParts.Add(inputType);
                            break;
                    }
                }
            }
            catch (Exception exception)
            {
                Console.Write(exception.StackTrace);
            }

            return result;
        }
 private void addCommand(CommandsList commandList)
 {
     StackPanel commandPane = new StackPanel();
     commandPane.Margin = new Thickness(0, 3, 0, 3);
     foreach (Command command in commandList.Commands)
     {
         Button commandBtn = new Button()
         {
             Content = command.Name,
             Name = command.Code,
             BorderThickness = new Thickness(0),
             Foreground = new SolidColorBrush(Colors.Black),
             Background = new SolidColorBrush(Colors.LightGray)
         };
         commandBtn.Click += new RoutedEventHandler(Button_Clicked);
         commandPane.Children.Add(commandBtn);
     }
     ContentPanel.Children.Add(commandPane);
 }