我怎样才能知道 JSON returns 是哪种类型 JsonSerializer.Deserialize?

How can I get to know which type JSON returns by JsonSerializer.Deserialize?

现在我正在使用 System.Text.Json 中的 JsonSerializer.Deserialize 将字符串反序列化为模型。但是,当我从远程服务器的第三方 API 获取 JSON 时,有两种情况。当一切运行良好时,它将 return JSON 包括我需要的聊天消息:

{
    "msg": "hello everyone!",
    "msgtype": "text"
}

当代码有问题时,它将 return JSON 包括错误:

{
    "errorcode": "123",
    "errormsg": "Not such table \"aaa\""
}

想知道每次都是JSONreturn的类型,消息还是上面的错误

我考虑使用 String.Contain("errorcode") 来了解 return 是消息 JSON 还是开头的错误 JSON。

然而,聊天消息是不可预测的,它甚至可能在消息 JSON.

中包含文本 "errorcode"

代码如下:

  public class msgModel
    {
        public string msg{ get; set; }
        public string msgtype{ get; set; }
    }
 public class errorModel
    {
        public string errorcode{ get; set; }
        public string errormsg{ get; set; }
    }

我总是这样反序列化JSON:

string JSON="";//some JSON
JsonSerializer.Deserialize(JSON, typeof(msgModel));

我只能在它周围添加一个 try{}catch{} 来捕获 JSON return 是否有错误。我认为这不是正确的方法。我该如何解决?

我建议将所有属性集成到 1 个对象中并检查 "errorcode" 是否存在。

public class MsgModel
{
    [JsonProperty("errormsg")]
    public string Error { get; set; }

    [JsonProperty("errorcode")]
    public string ErrorCode { get; set; }

    [JsonProperty("msg")]
    public string msg { get; set; }

    [JsonProperty("msgtype")]
    public int msgtype { get; set; }
}

接下来,您只需检查 if object.errorcode.isNullorEmpty 并从那里开始。

This is more robust