private bool TryParseFeature(RavenJObject obj, out object result) { string typeString; if (TryParseTypeString(obj, out typeString) && typeString.ToLowerInvariant() == "feature") { RavenJToken geometry; object geo; if (obj.TryGetValue("geometry", out geometry) && TryParseGeometry((RavenJObject)geometry, out geo)) { RavenJToken prop; Dictionary <string, object> pr = null; if (obj.TryGetValue("properties", out prop) && prop is RavenJObject) { var props = (RavenJObject)prop; if (props.Count > 0) { pr = Enumerable.ToDictionary(props, x => x.Key, x => SantizeRavenJObjects(x.Value)); } } object id = null; RavenJToken idToken; if (obj.TryGetValue("id", out idToken)) { id = SantizeRavenJObjects(idToken); } result = _shapeConverter.ToFeature(geo, id, pr); return(true); } } result = null; return(false); }