#c# #json #api #zipcode
#c# #json #API #почтовый индекс
Вопрос:
Я использую API из Zip-Code.com в результате чего я передаю ему 3 переменные (почтовый индекс, минимальное расстояние, максимальное расстояние), и он возвращает все почтовые индексы вместе с названиями городов в этом радиусе. Я могу отправить запрос, и я получаю ответ, но когда я пытаюсь десериализовать json в свой объект, я получаю следующую ошибку: (Неожиданный символ, встречающийся при синтаксическом анализе значения: . Path «, строка 0, позиция 0.’) Ниже приведен мой код, а также некоторые из закомментированных кодов, с которыми я пытался, но безуспешно.
class Worker
{
string zipAPIKey = "MYAPIKEY";
string requestURL = "https://api.zip-codes.com/ZipCodesAPI.svc/1.0/";
RootObject ZipCodesObject = new RootObject();
public int DoWork()
{
GetZips();
return 0;
}
public RestRequest CreateRequest(string endPoint, Method method)
{
var request = new RestRequest(endPoint, method);
request.RequestFormat = DataFormat.Json;
request.Method = method;
request.AddHeader("Accept", "application/json");
return request;
}
public void GetZips()
{
int minimumRadius = 0;
int maxRadius = 20;
string ZipCode = "40291";
List<string> ZipList = new List<string>();
var client = new RestClient(requestURL);
client.BaseUrl = new Uri(requestURL);
RestRequest request = CreateRequest(@"FindZipCodesInRadius?zipcode=" ZipCode "amp;maximumradius=" maxRadius "amp;minimumradius=" minimumRadius "amp;key=" zipAPIKey, Method.GET);
IRestResponse response = client.Execute(request);
//Console.WriteLine(response.Content.GetType());
//string removed = JsonConvert.DeserializeObject(response.Content).ToString();
//removed.Substring(1);
//JsonConvert.SerializeObject(response.Content);
//response.Content.Trim(new char[] { 'uFEFF', 'u200B' });
//string result = response.Content;
//result = JToken.Parse(result).ToString();
//Console.WriteLine(result);
//result = JToken.Parse(response.Content).ToString();
//Console.WriteLine(result);
string json = new StreamReader(response.Content).ReadToEnd();//This fails with the same error that the DeserializeObject statement below fails with.
Console.WriteLine(json);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
ZipCodesObject = JsonConvert.DeserializeObject<RootObject>(response.Content);// This is where I get the error
}
}
}
Ответ, который я получаю при печати на консоли, показывает знак вопроса в начале.
?{
"DataList": [
{
"Code": "40291",
"City": "LOUISVILLE",
"State": "KY",
"Latitude": 38.131191000000,
"Longitude": -85.574576000000,
"County": "JEFFERSON"
}//This is just the first result from the API.
При наведении курсора мыши на ответ.Содержимое, которое он показывает мне, это ——>
Как выглядит ответ перед выбором режима просмотра
Чего я здесь не понимаю? Я пробовал несколько вещей, но просто не могу заставить его работать должным образом. Спасибо!
Комментарии:
1. Можете ли вы указать точку останова и проверить ответ. Содержимое и добавьте, как выглядят данные, к вашему сообщению?
2. Получаете ли вы системный.Net.HttpStatusCode. OK (который равен 200) или другое значение?
3. Что там делает знак вопроса?
4. Я действительно получаю код состояния OK.
5. @NineBerry Вот что я пытаюсь выяснить. Я читал вещи, в которых говорится, что я, возможно, дважды сериализую объект, но я пытался удалить или закомментировать части, которые сериализовали Json, но по-прежнему безуспешно. Я также видел, где попытка проанализировать элемент разными способами иногда помогает, но я пробовал и их, и все еще не получаю результатов, которые я ищу. Я также попробовал несколько различных типов обрезки, чтобы избавиться от ? но все еще не повезло.