sup*_*ool 5 c# json.net asp.net-mvc-4
我试图反序列化json数据,我必须与我的模型类
杰森:
"{'test':'1339886'}"
Run Code Online (Sandbox Code Playgroud)
课程:
public class NewtonTest
{
public Element test { get; set; }
}
public class Element
{
public string sample { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在主类:
//under Main
string jsonData = "{'test':'1339886'}";
var = JsonConvert.DeserializeObject<NewtonTest>(jsonData);
Run Code Online (Sandbox Code Playgroud)
错误信息: //内在异常
无法从System.String转换或转换为Test.Element."
我完全知道错误的含义,因为我在课堂上传递string了我的类型(不匹配发生).jsonclass
在这种情况下,我需要处理错误,如果输出不匹配,可能会置空,但不应抛出异常.
我尝试通过设置阅读文档和设置选项,但似乎没有任何工作.
我使用的是Newtonsoft.Json 4.5版
您可以告诉JSON.NET忽略特定成员和类型的错误:
var settings = new JsonSerializerSettings
{
Error = (sender, args) =>
{
if (object.Equals(args.ErrorContext.Member, "test") &&
args.ErrorContext.OriginalObject.GetType() == typeof(NewtonTest))
{
args.ErrorContext.Handled = true;
}
}
};
NewtonTest test = JsonConvert.DeserializeObject<NewtonTest>(json, settings);
Run Code Online (Sandbox Code Playgroud)
此代码不会抛出异常.Error设置对象中的处理程序将被调用,如果抛出异常的成员被命名"test"并且属于NewtonTest,则跳过错误并且JSON.NET继续运行.
该ErrorContext属性还有其他属性,您可能希望仅用于处理您绝对确定要忽略的错误.
| 归档时间: |
|
| 查看次数: |
2248 次 |
| 最近记录: |