Json.NET中的自定义DateTime SerializerSetting 1 2

问题描述

我正在尝试标准化Web服务如何处理javascript和后端(.NET)之间的日期。

我的目标是对DateTime对象进行以下处理:

    从客户端接收日期时
  1. 字符串格式
  2. 将DateTime objs发送给客户端时的unix时间戳

我已经分别完成了上述每个操作,但是由于DateTime值包装在各个集合中,因此解决方案似乎彼此冲突。

1。

在默认的JsonConvert设置中设置DateFormatString选项。

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{
    Converters = new List<JsonConverter> { ... },DateFormatString = "MM-dd-yyyy",};

2。

定义一个自定义JsonConverter以将DateTime objs序列化为时间戳。

public class DateTimeTimestampConverter : JavaScriptDateTimeConverter
{
    public override void WriteJson( JsonWriter writer,object value,JsonSerializer serializer )
    {
        if ( value == null ) return;

        long ticks;

        if ( value is DateTime dateTime )
        {
            DateTime utcDateTime = dateTime.ToUniversalTime(); // custom extension fn
            ticks = utcDateTime.ToJsTimestamp();
        }
        else
            throw new JsonSerializationException( "Expected date object value." );

        writer.WriteValue( ticks );
    }
}

问题在于,只要将DateTime objs包装在诸如字典或List之类的对象中,就会在JsonWriter的b / c中使用DateFormatString选项。

在此问题上的任何帮助将不胜感激,因为我想避免枚举具有DateTime对象的集合并将它们转换为序列化之前的时间戳。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...