我如何指示Nancy 2.0.0 -clinteastwood对DateTime
进行自定义反序列化,例如从此json
{
"someDate": "2018-09-18"
}
插入DateTime
属性中,例如在C#类的实例中
public class SomeClass
{
public DateTime SomeDate { get; set; }
}
?
在2.0.0之前的版本中,您可以apparently通过调用静态JavaScriptPrimitiveConverter
来分配自定义JsonSettings
,例如在ApplicationStartup
中这样
Nancy.Json.JsonSettings.PrimitiveConverters.Add(new CustomJavaScriptPrimitiveConverter())
并且我本可以实现JavaScriptPrimitiveConverter
反序列化覆盖,例如这样
public override object Deserialize(object primitiveValue, Type type, JavaScriptSerializer serializer)
{
if (type == typeof(DateTime))
{
if (primitiveValue is string dateString
&& DateTime.TryParseExact(dateString, "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out var dateTime))
{
return dateTime;
}
}
return null;
}
但是,静态JsonSettings类似乎在2.0.0中不可用。
从搜索看来,似乎可以使用某些SimpleJson功能来实现此目的,但是我找不到任何示例,而且我发现的任何文档似乎都没有用2.0.0的方式更新东西。
答案 0 :(得分:3)
就像以前的1.x版本一样,您可以使用自定义category_filter_relations_items
来指导Nancy关于常规的序列化/反序列化调整:
category_filter_relation_id
并使用您的容器注册此id
,例如在category_filter_relations
的{{1}}中,如下所示:
modification_id = 18340300
我的问题是我错过了为此特定项目提供JsonSerializer
NuGet软件包的功能。
答案 1 :(得分:0)
问题是关于注册PrimitiveConverter
,但答案似乎是在注册JsonSerializer
。
通过使用PrimitiveConverter
在Nancy 2.0.0中进行注册,我能够注册Global.Application_Start
:
protected void Application_Start(object sender, EventArgs e)
{
Nancy.Json.JsonConfiguration.Default.PrimitiveConverters.Add(new CustomJavaScriptPrimitiveConverter());
}