Неожиданный символ, встречающийся при синтаксическом анализе значения: . Path «, строка 0, позиция 0.’

#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, но по-прежнему безуспешно. Я также видел, где попытка проанализировать элемент разными способами иногда помогает, но я пробовал и их, и все еще не получаю результатов, которые я ищу. Я также попробовал несколько различных типов обрезки, чтобы избавиться от ? но все еще не повезло.