如何从JsonConvert.DeserializeObject获取令牌值

3
我正在尝试从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
}}

我尝试过拆分字符串,但这并不是一个清晰的方法,还有其他解决方法吗?

你在哪里尝试过截取字符串?请给我们展示代码。 - SUNIL DHAPPADHULE
这是一个有效的JSON响应吗?它是否包含{{并且在令牌结尾没有"?请提供正确的信息。 - Thomas Weller
你正在将字符串反序列化为对象,因为JsonConvert不知道类型。你可以反序列化为dynamic或使用JsonConvert.DeserializeObject<T>并使用模型类。 - MindSwipe
2个回答

1
假设这是您正在获取的JSON数据(因为您在问题中提供的JSON格式无效)。
{
    "token":"eyJraWQiOiJNSytSKzRhYUk4YjBxVkhBMkZLZFN4Ykdpb3RXbTNXOGhZWE45dXF3K3YwPSIsImFsZyI6IlJTMjU2In0.eyJzdWIiOiIxYmRlZjJkNy05YTRlLTRmYmYtYTk4Zi02Y2EwNzE0NTgzNzgiLCJlbWFpb"
}

你可以将其反序列化为dynamic,如下所示:(如this答案中所述)
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);
}

-1

你可以尝试这个

 dynamic obj =JsonConvert.DeserializeObject<dynamic>(authenticate.RawContent.ReadAsStringAsync().Result);
    string token = Convert.ToString(obj.token);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接