using System.Collections.Generic;
using Newtonsoft.Json.Linq;
public static void Main()
""Office"": ""10649273-8412-4ac0-9109-085b04b49964"",
""SearchItemList[0].Column"": ""Account"",
""SearchItemList[0].Operation"": ""0"",
""SearchItemList[0].Value"": ""be5a36a7-c301-44d7-8d40-85e9637b5b14"",
""SearchItemList[1].Column"": """",
""SearchItemList[1].Operation"": ""0"",
""SearchItemList[1].Value"": """",
""SearchItemList[2].Column"": """",
""SearchItemList[2].Operation"": ""0"",
""SearchItemList[2].Value"": """",
""SearchItemList[3].Column"": """",
""SearchItemList[3].Operation"": ""0"",
""SearchItemList[3].Value"": """",
""SearchItemList[4].Column"": """",
""SearchItemList[4].Operation"": ""0"",
""SearchItemList[4].Value"": """",
""SearchItemList[5].Column"": """",
""SearchItemList[5].Operation"": ""0"",
""SearchItemList[5].Value"": """"
JObject obj = JObject.Parse(json);
RootObject root = new RootObject
Office = (string)obj["Office"],
.Where(p => p.Name.StartsWith("SearchItemList["))
var parts = p.Name.Split(new string[] { "[", "]." }, 3, StringSplitOptions.None);
Index = int.Parse(parts[1]),
Property = new JProperty(parts[2], p.Value)
.Select(g => new JObject(g.Select(a => a.Property)).ToObject<SearchItem>())
Console.WriteLine("Office: " + root.Office);
foreach (SearchItem item in root.SearchItemList)
Console.WriteLine("Column: " + item.Column);
Console.WriteLine("Operation: " + item.Operation);
Console.WriteLine("Value: " + item.Value);
public string Office { get; set; }
public List<SearchItem> SearchItemList { get; set; }
public string Column { get; set; }
public string Operation { get; set; }
public string Value { get; set; }