Newtonsoft-如果缺少属性,如何引发异常?

时间:2018-09-25 09:57:41

标签: c# json json.net

我有一个简单的功能:

public JsonResult FetchData(object obj)
{
  var jsonData = new { dateTime = DateTime.Today };
  jsonData = JsonConvert.DeserializeAnonymousType(obj.ToString(), jsonData);
}

案例A: 如果我使用json数据 {"dateTime":"2018-09-24"} 我可以确定正确的日期:2018-09-24

案例B: 如果我使用json数据,则变量名具有空格 {"dateTime ":"2018-09-24"} 我得到日期:0001-01-01,没有任何例外。 “ dateTime”对我来说不是有效的变量名

我想要的行为是CASE B抛出异常或注意到这种情况无效。我该如何实现?

谢谢

1 个答案:

答案 0 :(得分:0)

使用适当的数据结构进行反序列化,您可以使用JsonProperty属性控制属性名称:

public class Foo
{
    [JsonProperty("dateTime ")] //Note the space in here
    public DateTime DateTime { get; set; }
}

现在反序列化是这样的:

var result = JsonConvert.DeserializeObject<Foo>(json);