【发布时间】:2017-11-17 19:25:48
【问题描述】:
我有一些从休息服务返回的属性作为名称-值对的数组。
在某些情况下,该值是以通用可排序格式表示的日期: { "name": "修改日期", “价值”:“2017-11-13T15:15:13.968Z” }
当它被反序列化器解析时,该值被识别为日期,但考虑到该对被反序列化为名称和值的类型为字符串,然后日期将转换为字符串并失去精度:“ 2017 年 13 月 11 日 15:15:13"
使用 NameValue 类型的转换器很容易看到这一点。
if (reader.TokenType == JsonToken.StartObject)
{
var item = JObject.Load(reader);
return new NameValueFacet()
{
Name = item["name"].Value<string>(),
Value = item["value"].Value<string>()
};
}
item["value"].Type 显示类型为 Date。
如何让 Json.NET 将其保留为字符串“未解析”?
【问题讨论】:
-
设置 reader.DateParseHandling = DateParseHandling.None;在调用 JObject.Load(reader) 解决问题之前。有什么方法可以在我的 NameValue 类的 Value 属性上指定一个 Json 属性来获得相同的结果,而无需使用转换器?
-
请编辑您的问题,而不是将其放在评论中。
-
在单个属性上没有关闭日期解析的属性,但是您可以通过在
JsonSerializerSettings中设置DateParseHandling = DateParseHandling.None并将设置传递给JsonConvert.DeserializeObject来全局关闭它。小提琴:dotnetfiddle.net/1y1bXM