Я пытаюсь получить значение токена из JsonConvert.DeserializeObject.
static async Task Main(string[] args)
{
var apiClient = new ApiClient("https://connect.test.com/test/");
var authenticate = await Authenticate(apiClient);
var token =JsonConvert.DeserializeObject(authenticate.RawContent.ReadAsStringAsync().Result);
Console.ReadKey();
}
Токен значения:
{{
"token": "eyJraWQiOiJNSytSKzRhYUk4YjBxVkhBMkZLZFN4Ykdpb3RXbTNXOGhZWE45dXF3K3YwPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIxYmRlZjJkNy05YTRlLTRmYmYtYTk4Zi02Y2EwNzE0NTgzNzgiLCJlbWFpb
}}
Я пытался разбить строку, но это не чистый способ, есть ли другой способ решить эту проблему?
Это вообще допустимый ответ JSON с {{
и без "
в конце токена? Пожалуйста, дайте нам правильную информацию.
Вы десериализуете строку в объект, потому что JsonConvert не знает тип. Вы можете либо десериализовать в dynamic
, либо использовать JsonConvert.DeserializeObject<T>
и использовать класс модели
Вы можете попробовать это
dynamic obj =JsonConvert.DeserializeObject<dynamic>(authenticate.RawContent.ReadAsStringAsync().Result);
string token = Convert.ToString(obj.token);
Предполагая, что это JSON, который вы получаете (поскольку JSON в вашем вопросе недействителен)
{
"token":"eyJraWQiOiJNSytSKzRhYUk4YjBxVkhBMkZLZFN4Ykdpb3RXbTNXOGhZWE45dXF3K3YwPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIxYmRlZjJkNy05YTRlLTRmYmYtYTk4Zi02Y2EwNzE0NTgzNzgiLCJlbWFpb"
}
вы можете 1: десериализовать его в dynamic
вот так: (как указано в ответе это)
dynamic parsed = JObject.Parse(authenticate.RawContent.ReadAsStringAsync().Result)
Console.WriteLine(parsed.token);
или (мой предпочтительный типобезопасный способ) используйте класс модели для десериализации следующим образом:
class AuthenticationModel
{
[JsonProperty("token")]
public string Token {get; set;}
}
static async Task Main(string[] args)
{
var parsed = JsonConvert.DeserializeObject<AuthenticationModel>(await authenticate.RawContent.ReadAsStringAsync());
Console.WriteLine(parsed.Token);
}
где вы пытались обрезать строку? покажи нам код