根据ISO 8601 json日期字段可以包含部分数据,例如, "YYYY"
仅限于年份或"YYYY-MM"
仅适用于年份。Newtonsoft.Json序列化是否支持仅有的日期字段?
但是,下面的代码,使用Json.NET deserializer那是应该支持它,抛出一个格式错误:
class PartialDateContainter
{
public DateTime MyPartialDate { get; set; }
}
[Test]
public void JustCheckJsonDates()
{
var serializationSettings =
new JsonSerializerSettings
{
DateFormatHandling = DateFormatHandling.IsoDateFormat,
DateTimeZoneHandling = DateTimeZoneHandling.Utc,
NullValueHandling = NullValueHandling.Ignore,
ReferenceLoopHandling = ReferenceLoopHandling.Serialize,
ContractResolver = new ReadOnlyJsonContractResolver(),
Converters = new List<JsonConverter>
{
new Iso8601TimeSpanConverter(),
new IsoDateTimeConverter()
}
};
var ser = JsonSerializer.Create(serializationSettings);
var json = "{ \"MyPartialDate\": \"2005\" }";
var shus = ser.Deserialize<PartialDateContainter>(new JsonTextReader(new StringReader(json)));
Assert.True(true);
}
我缺少的东西?
年份加上一个月的作品(如:' “2005-05”'),仅仅只有一年,日期失败反序列化(例如'“2005”')。 – Nitzankin
@Nkosi不,它仍然没有解决,我的问题是只有一年的日期格式。 – Nitzankin
然后,您将需要一个自定义转换器。 – Nkosi