Я пытаюсь получить значение токена из 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
}}

Я пытался разделить строку, но это не чистый способ, есть ли другой способ решить эту проблему?

1
Devbrah 28 Май 2019 в 09:21

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);
}
0
MindSwipe 28 Май 2019 в 06:34

Вы можете попробовать это

 dynamic obj =JsonConvert.DeserializeObject<dynamic>(authenticate.RawContent.ReadAsStringAsync().Result);
    string token = Convert.ToString(obj.token);
-1
Shubham Shendage 28 Май 2019 в 06:34