Ошибка при чтении значения токена доступа из ответа Web API - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь прочитать ответ Rest Web API. Я получаю сообщение об ошибке при анализе данных

Ответ Тип содержимого: application / json; charset = utf-8

Ответ: {"access_token": "ot-a4943ac25cf94df3adacd11c71b8ea01", "token_type": "Bearer", "scope": ["READ_USER_PROFILE", "WRITE_CONVERS}" ","

DTO:

public class ResponseData
    {
        public string AccessToken { get; set; }
        public string TokenType { get; set; }
        public string Scope { get; set; }
    }

public class Scope
    {
        public string[] RequestScope { get; set; }
    }

Код:

using (HttpContent rescontent = response.Result.Content)
            {
                // ... Read the string.
                Task<string> result = rescontent.ReadAsStringAsync();
               // res = result.Result;

                var responseData = JsonConvert.DeserializeObject<ResponseData>(result.Result);

                Console.WriteLine("Response: {0}", responseData.AccessToken);
            }

Ошибка: Newtonsoft. Json .JsonReaderException: 'При анализе значения обнаружен неожиданный символ: [. Путь 'scope', строка 1, позиция 85. '

Язык программирования: C#

Пожалуйста, дайте мне знать, как это исправить? Я хочу прочитать параметр токена доступа из ответа.

1 Ответ

1 голос
/ 03 февраля 2020

Вам не хватает массива , обозначенного [ и ] в json

{ 
   "access_token":"ot-a4943ac25cf94df3adacd11c71b8ea01",
   "token_type":"Bearer",
   "scope":[ // this is an array
      "READ_USER_PROFILE",
      "WRITE_CONVERSATIONS",
      "READ_CONVERSATIONS"
   ]
}

Вам необходимо изменить свой класс

public List<string> Scope { get; set; }

или

public string[] Scope { get; set; }

Редактировать

У вас также могут быть другие ошибки, поэтому вам может потребоваться перейти на это

public string Access_Token { get; set; }
public string Token_Type { get; set; }

или

[JsonProperty("access_token")]
public string Access_Token { get; set; }

[JsonProperty("token_type")]
public string TokenType { get; set; }
...