Asp.net core 如何在返回不同类型的JSON时反序列化JSON?

Asp.net core 如何在返回不同类型的JSON时反序列化JSON?,asp.net-core,.net-core,Asp.net Core,.net Core,我将一些数据发布到远程服务器。数据运行成功后,将返回: {"access_token":"sd234sd234sdf324","expires_in":7200} {"errcode":40013,"errmsg":"invalid appid"} 当它失败时,它返回: {"access_token":"sd234sd234sdf324","expires_in":7200} {"errcode":40013,"errmsg":"invalid appid"} 这是我的密码: H

我将一些数据发布到远程服务器。数据运行成功后,将返回:

{"access_token":"sd234sd234sdf324","expires_in":7200}
{"errcode":40013,"errmsg":"invalid appid"}
当它失败时,它返回:

{"access_token":"sd234sd234sdf324","expires_in":7200}
{"errcode":40013,"errmsg":"invalid appid"}
这是我的密码:

    HttpClient HC = new HttpClient();
    HttpResponseMessage HRM = await HC.PostAsync("https://www.microsoft/callback/aaa/), null);
    string Content = await HRM.Content.ReadAsStringAsync();
    Models.SuccessModel SM=(Models.SuccessModel)JsonSerializer.Deserialize(Content, typeof(Models.SuccessModel));
在将JSON转换为类的最后一部分,我使用了SuccessModel,但是如果返回失败的JSON,它将抛出一个类型错误的错误

我知道错误是什么。但是我该怎么处理呢

我想知道它是成功还是失败,并得到它的值


谢谢。

制作另一个错误模型,如下所示:

public class ErrorModel
{
   public string errcode {get;set;}
   public string errmsg {get;set;}
}
string response = await HRM.Content.ReadAsStringAsync();

if (response.Contains("access_token", StringComparison.OrdinalIgnoreCase))
{
    Models.SuccessModel successModel =(Models.SuccessModel)JsonSerializer.Deserialize(response, typeof(Models.SuccessModel));
} else
{
    ErrorModel erroModel = (Models.ErrorModel)JsonSerializer.Deserialize(response,typeof(Models.ErrorModel));
}
然后按以下步骤操作:

public class ErrorModel
{
   public string errcode {get;set;}
   public string errmsg {get;set;}
}
string response = await HRM.Content.ReadAsStringAsync();

if (response.Contains("access_token", StringComparison.OrdinalIgnoreCase))
{
    Models.SuccessModel successModel =(Models.SuccessModel)JsonSerializer.Deserialize(response, typeof(Models.SuccessModel));
} else
{
    ErrorModel erroModel = (Models.ErrorModel)JsonSerializer.Deserialize(response,typeof(Models.ErrorModel));
}

为错误建立另一个模型,如下所示:

public class ErrorModel
{
   public string errcode {get;set;}
   public string errmsg {get;set;}
}
string response = await HRM.Content.ReadAsStringAsync();

if (response.Contains("access_token", StringComparison.OrdinalIgnoreCase))
{
    Models.SuccessModel successModel =(Models.SuccessModel)JsonSerializer.Deserialize(response, typeof(Models.SuccessModel));
} else
{
    ErrorModel erroModel = (Models.ErrorModel)JsonSerializer.Deserialize(response,typeof(Models.ErrorModel));
}
然后按以下步骤操作:

public class ErrorModel
{
   public string errcode {get;set;}
   public string errmsg {get;set;}
}
string response = await HRM.Content.ReadAsStringAsync();

if (response.Contains("access_token", StringComparison.OrdinalIgnoreCase))
{
    Models.SuccessModel successModel =(Models.SuccessModel)JsonSerializer.Deserialize(response, typeof(Models.SuccessModel));
} else
{
    ErrorModel erroModel = (Models.ErrorModel)JsonSerializer.Deserialize(response,typeof(Models.ErrorModel));
}

但是,您可以这样工作

公共类模型
{
公共字符串访问\u令牌{get;set;}
{get;set;}中的公共长过期
公共整数错误代码{get;set;}
公共字符串errmsg{get;set;}
}

因此,只需获取响应并在使用时检查errcode,无需在反序列化时检查

公共类模型
{
公共字符串访问\u令牌{get;set;}
{get;set;}中的公共长过期
公共整数错误代码{get;set;}
公共字符串errmsg{get;set;}
}

因此,只需获取响应并在使用时检查错误代码,无需在反序列化时检查

这很好,也很容易。这很好,很容易。