我怎样才能知道 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
并从那里开始。
现在我正在使用 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
并从那里开始。