Я пытаюсь получить значение токена из 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
}}
Я пытался разделить строку, но это не чистый способ, есть ли другой способ решить эту проблему?
2 ответа
Предполагая, что это 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);
}
Вы можете попробовать это
dynamic obj =JsonConvert.DeserializeObject<dynamic>(authenticate.RawContent.ReadAsStringAsync().Result);
string token = Convert.ToString(obj.token);
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.