如何检查Json是否与特定的C#类型匹配?

Kal*_*exx 8 c# serialization json

我的Asp.Net MVC应用程序操作通过序列化几个C#对象中的一个来返回JSON,具体取决于具体情况(如果发生错误,如果检索到一种类型的数据,则为一种数据类型等).

当我尝试在C#windows服务中使用JSON时,我无法确定要返回的JSON类型.不幸的是,从我所看到的,如果没有JSON匹配,JSON序列化程序(JSON.Net和RestSharp使用的任何东西)都可以创建一个空对象.

我理解为什么会这样,但我如何找出如果从JSON序列化的值是合法的,或者如果没有相匹配的JSON性能和串行的刚刚创建一个空的对象困惑.

有谁知道我如何确定JSON和我试图反序列化的类型之间是否存在匹配?

Emm*_*l N -2

我建议使用 try 和 catch 块,如果您的反序列化将抛出无效参数异常,则字符串的格式不正确。如果您使用的是 System.Web.Script.Serialization

JavaScriptSerializer sel = new JavaScriptSerializer();

try 
{
    return sel.Deserialize<List<YourObjectType>>(jSONString);
}
catch(System.ArgumentException e)
{
     return null;
}
Run Code Online (Sandbox Code Playgroud)

  • 如果没有 json 属性与您的泛型类型匹配,反序列化不会抛出错误,它只会创建一个空的 C# 对象 (8认同)