【发布时间】:2014-10-03 21:15:05
【问题描述】:
如果 JSON 中的 JavaScript 对象不会反序列化为我想要的 C# 对象,我如何询问它以提供错误消息来解释输入的问题? (假设JSON格式正确,只是数据无效。)
我的 C# 类:(简体)
public class Dependent
{
public Dependent()
{
}
public string FirstName { get; set; }
public DateTime DateOfBirth { get; set; }
}
要反序列化的测试代码:
string dependents = @"[
{
""FirstName"": ""Kenneth"",
""DateOfBirth"": ""02-08-2013""
},
{
""FirstName"": ""Ronald"",
""DateOfBirth"": ""08-07-2011""
}
]";
JavaScriptSerializer jss = new JavaScriptSerializer();
List<Dependent> deps = new List<Dependent>();
deps = jss.Deserialize<List<Dependent>>(dependents);
这一切都有效。除非传入非日期作为生日,否则将无法反序列化。
我想提供一条错误消息,例如“家属 2 的出生日期不是有效日期”。或“家属 2 必须未满 18 岁。”
如果 JSON 不会反序列化到我的对象中,我该如何验证它的详细信息?
可能的解决方案:
public class SerializableDependent
{
public SerializableDependent()
{
}
public string FirstName { get; set; }
public string DateOfBirth { get; set; }
}
然后我不应该得到任何错误,将所有内容都作为字符串,我可以遍历对象并进行验证。但这似乎是错误的。
【问题讨论】:
-
异常不能说明问题吗?
标签: c# json serialization javascriptserializer