【问题标题】:Newtonsoft - how to throw exception if property is missing? [duplicate]Newtonsoft - 如果属性丢失,如何抛出异常? [复制]
【发布时间】:2019-02-28 21:55:58
【问题描述】:

我有一个简单的函数:

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

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

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

我想要的行为是让 CASE B 抛出异常或通知此案例无效。我如何做到这一点?

谢谢

【问题讨论】:

  • 避免使用 CASE B,因为标识符中没有空格!
  • 我添加了一个额外的检查“jsonData.dateTime

标签: c# json json.net


【解决方案1】:

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

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

现在像这样反序列化:

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

【讨论】:

  • 我希望 CASE B 抛出异常
  • 这不是你的问题所说的。
猜你喜欢
  • 2013-07-24
  • 1970-01-01
  • 2020-09-27
  • 1970-01-01
  • 2018-10-23
  • 1970-01-01
  • 2021-01-16
  • 1970-01-01
  • 2012-09-14
相关资源
最近更新 更多