У меня есть следующие JSON данные из веб-сервиса:Проблема разбора JSON данных
{"zip_codes":[{"zip_code":"36451","distance":0,"city":"Grove Hill","state":"AL"}, {"zip_code":"36446","distance":8.031,"city":"Fulton","state":"AL"}]}
Я использую Newtonsoft.Json библиотеки для .Net и пытается разобрать строку выше для городов. Я продолжаю получать ошибку.
public List<string> getZipCodesWithinRadius(string zipCode, string radius)
{
List<string> l = new List<string>();
string apiKey = @"----";
string apiFormat = @"radius.json";
string baseUrl = @"http://www.zipcodeapi.com/rest/";
string url = baseUrl + apiKey + @"/" + apiFormat + @"/" + zipCode + @"/" + radius + @"/mile";
WebClient client = new WebClient();
Stream stream = client.OpenRead(@"http://www.zipcodeapi.com/rest/uOrUEaRSt9KTqO0OuIFXxwH0uP7uX6AsU2mzcesGncAN1BCvjhtQNbRi0YNX4oqZ/radius.json/36451/10/mile");
StreamReader rdr = new StreamReader(stream);
List<ZipCode> ll = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ZipCode>>(rdr.Read().ToString());
foreach (ZipCode z in ll)
{
l.Add(z.city);
}
return l;
}
Вызывает следующую ошибку:
Error converting value 123 to type 'System.Collections.Generic.List`1[Petrologic.Tools.ZipCode]'. Path '', line 1, position 3.
Вот мой объект:
public class ZipCode
{
public ZipCode() { }
[JsonProperty(PropertyName="zip_code")]
public string zip_code { get; set; }
[JsonProperty(PropertyName = "distance")]
public double distance { get; set; }
[JsonProperty(PropertyName = "city")]
public string city { get; set; }
[JsonProperty(PropertyName = "state")]
public string state { get; set; }
}
Пожалуйста, помогите
'rdr.Read()' читает только один символ. Вероятно, вы хотите использовать 'ReadToEnd()'. Но это все равно не сработает, вам может понадобиться класс 'ZipCodes', который имеет свойство« Список ZipCode »и десериализуется в этот тип. И не публикуйте свой api-ключ публично. – Crowcoder