asp.net-core - 如何在返回不同类型的同时反序列化 JSON?
问题描述
我将一些数据发布到远程服务器。数据运行成功后,返回:
{"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));
}
推荐阅读
- android - Android 6.0.1 谷歌地图异常 IllegalAccessError
- swift - How to suspend a work item on the main queue
- c# - rdlc 中的自定义字体被特殊字符弄乱了
- java - spring-boot Maven: How to create executable jar with main class?
- javascript - Graphql react-apollo IntrospectionFragmentMatcher
- r - R合并功能重复“按”错误
- regex - Distinguishing and substituting decimals in Perl
- azure - 如何使用 Azure CLI 创建 VM 指定 Azure Linux OS 磁盘类型
- orm - AdonisJS 在使用 ORM 时仅使用 api 捕获数据库插入错误
- .htaccess - 使用 htaccess 将 URL php 重写为 html?