public override bool MoveNext() { if (IsDisposed) throw new ObjectDisposedException(null); if (_reader == null) { var wc = new WebClient(); //var json = wc.DownloadString("http://data.baltimorecity.gov/api/views/ijfz-2v3c/rows.json"); //var json = wc.DownloadString("file:///C:/Users/PTying/Documents/GitHub/civilsalary/civilsalary.datasync/usa/md/baltimorecity/rows.json"); var uri = new Uri((new FileInfo("..\\..\\..\\civilsalary.datasync\\usa\\md\\baltimorecity\\rows.json")).FullName); var json = wc.DownloadString(uri); _reader = new JsonTextReader(new StringReader(json)); _reader.ReadToProperty("meta", 1); _reader.ReadToProperty("view", 3); _reader.Read(); //start view object... _view = JObject.Load(_reader).AsDynamic(); _reader.ReadToProperty("data", 1); _reader.Read(); //step in to data } if (_reader.Read() && _reader.Depth == DataDepth) { var currentValues = JArray.Load(_reader); _current = new EmployeeData() { DepartmentName = ((string)currentValues[ColumnIndex("agency")]).Trim(), DepartmentKey = ((string)currentValues[ColumnIndex("agency")]).Trim().ToUrlValue(), Row = new EmployeeRow() { GovernmentKey = _government, Name = ((string)currentValues[ColumnIndex("name")]).Trim().Trim(','), EmployeeId = ((string)currentValues[ColumnIndex("id")]).Trim(), Position = ((string)currentValues[ColumnIndex("jobtitle")]).Trim(), Salary = double.Parse((string)currentValues[ColumnIndex("annualsalary")], NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowParentheses | NumberStyles.AllowThousands), GrossPay = double.Parse((string)currentValues[ColumnIndex("grosspay")], NumberStyles.AllowCurrencySymbol | NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign | NumberStyles.AllowParentheses | NumberStyles.AllowThousands), HireDate = (string)currentValues[ColumnIndex("hiredate")] == null ? (DateTime?)null : DateTime.Parse((string)currentValues[ColumnIndex("hiredate")]) } }; return true; } else { return false; } }