首页 > 解决方案 > 如何在返回不同类型的同时反序列化 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,它将抛出类型错误的错误。

我知道错误是什么。但是我该如何处理呢?

我想知道它是成功还是失败并获得它的价值。

谢谢你。

标签: asp.net-core.net-core

解决方案


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

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));
}

推荐阅读