public object this[string item]
{
get {
var listItem = this.Cast<IDictionary<string, object>>().First(l => l.ContainsKey(item)); // I am assuming that your top level array items will only have one matching key
return listItem[item];
}
}
}