JavaScriptSerializer序列化成Json时DateTime类型数据的处理

AJAX JSON中日期类型DateTime格式化的序列化自定义对象以及自定义类型参数的问题处理 首先看一下ASP.NET AJAX服务器端对日期类型JSON序列化的处理:(详见Ajax扩展源码中的JavaScriptSerializer.cs)internal static readonly long DatetimeMinTimeTicks = (new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).Ticks;private s 阅读详情

JavaScriptSerializer在序列化时会将DateTime的数据序列化成类似\/Date(626543800000)\/这样的值,找了很多方法都不如意,最后在一个博客找到了完美的解决方法,地址:http://blog.calyptus.eu/seb/2011/12/custom-datetime-json-serialization/,通过自定义类型转换器的方式转换成想要的格式,转换器代码如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
public class DateTimeConverter : JavaScriptConverter
{
 
    public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
    {
        return new JavaScriptSerializer().ConvertToType(dictionary, type);
    }
 
    public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
    {
        if (!(obj is DateTime)) return null;
        return new CustomString(((DateTime)obj).ToString("yyyy-MM-dd"));
    }
 
    public override IEnumerable<Type> SupportedTypes
    {
        get { return new[] { typeof(DateTime) }; }
    }
 
    private class CustomString : Uri, IDictionary<string, object>
    {
        public CustomString(string str)
            : base(str, UriKind.Relative)
        {
        }
 
        void IDictionary<string, object>.Add(string key, object value)
        {
            throw new NotImplementedException();
        }
 
        bool IDictionary<string, object>.ContainsKey(string key)
        {
            throw new NotImplementedException();
        }
 
        ICollection<string> IDictionary<string, object>.Keys
        {
            get { throw new NotImplementedException(); }
        }
 
        bool IDictionary<string, object>.Remove(string key)
        {
            throw new NotImplementedException();
        }
 
        bool IDictionary<string, object>.TryGetValue(string key, out object value)
        {
            throw new NotImplementedException();
        }
 
        ICollection<object> IDictionary<string, object>.Values
        {
            get { throw new NotImplementedException(); }
        }
 
        object IDictionary<string, object>.this[string key]
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }
 
        void ICollection<KeyValuePair<string, object>>.Add(KeyValuePair<string, object> item)
        {
            throw new NotImplementedException();
        }
 
        void ICollection<KeyValuePair<string, object>>.Clear()
        {
            throw new NotImplementedException();
        }
 
        bool ICollection<KeyValuePair<string, object>>.Contains(KeyValuePair<string, object> item)
        {
            throw new NotImplementedException();
        }
 
        void ICollection<KeyValuePair<string, object>>.CopyTo(KeyValuePair<string, object>[] array, int arrayIndex)
        {
            throw new NotImplementedException();
        }
 
        int ICollection<KeyValuePair<string, object>>.Count
        {
            get { throw new NotImplementedException(); }
        }
 
        bool ICollection<KeyValuePair<string, object>>.IsReadOnly
        {
            get { throw new NotImplementedException(); }
        }
 
        bool ICollection<KeyValuePair<string, object>>.Remove(KeyValuePair<string, object> item)
        {
            throw new NotImplementedException();
        }
 
        IEnumerator<KeyValuePair<string, object>> IEnumerable<KeyValuePair<string, object>>.GetEnumerator()
        {
            throw new NotImplementedException();
        }
 
        IEnumerator IEnumerable.GetEnumerator()
        {
            throw new NotImplementedException();
        }
    }
}

  

 然后注册一下就行了:

 

1
2
public JavaScriptSerializer serializer = new JavaScriptSerializer();
serializer.RegisterConverters(new JavaScriptConverter[] { new DateTimeConverter() });

  

这样使用serializer序列化的对象中包含DateTime类型的值就会被转化成yyyy-MM-dd格式的字符串

JavaScriptSerializer序列化DateTime 在asp.net中使用JavaScriptSerializer实现Datetime的JSON序列化时会出现格式转换问题,造成Web前端解析出问题,解决的方式在网上也看了一些,但感觉太繁琐,JSON.NET之前也用过,感觉太过重量级,不是很喜欢了,因为还是考虑如何使用JavaScriptSerializer实现,产生问题的原因的JavaScriptSerializer采用的格式和本地格式不一致,但是JavaScriptSerializer转换字符串没有问题,因此决定用LINQ把集合中的日期类型转换问字符串类型,就很好的解决了这个问题。 立即下载

相关推荐

近4000张真实城市场景行人数据集:YOLO训练实战指南

行人检测是计算机视觉在智能驾驶与机器人感知中的基础任务,其核心挑战在于模型对真实道路场景的鲁棒性——尤其在小目标、遮挡、光照变化及中国特有交通参与者(如外卖骑手、接娃家长)下的泛化能力。本文围绕轻量化、高覆盖、强落地性的近4000张实采图像,系统阐释如何构建面向YOLO系列模型的高质量训练数据集:从四维场景采样策略(光照-遮挡-尺度-姿态)出发,解析标注规范对检测精度的关键影响,并说明数据增强需服务于真实干扰源(雨痕、动态模糊、对比度衰减),而非盲目堆叠。该数据集专为已掌握YOLO训练流程的算法工程师、嵌入

weixin_32495691的博客 298

JavaScriptSerializer 序列化json 时间格式

利用JavaScriptSerializer 序列化json 时间格式,得到的DateTime值值显示为“/Date(700000+0500)/”形式的JSON字符串,显然要进行转换 1.利用字符串直接替换 Model m = new Model { Id = 1, Dt = DateTime.Now }; JavaScriptSerializer js = new JavaS

Faery_Fan的博客 855

【QGIS、OSM】利用python开源工具实现指定区域的交通分配

如果从osmgnms和grid2demand得到的node.csv,我们要修改path4gnms代码中的utils.py的四处设置。利用QGIS实现可视化,得到的link_performance.csv,参数有volume和VOC。改完这四处代码,就可以运行path4gnms中的tutorial.ipynb了。

weixin_40594084的博客 1275

JavaScriptSerializer类序列化日期时需要注意的问题

1、让我们来看看使用JavaScriptSerializer类序列化日期会出现什么问题? 1)创建用于序列化的测试类,如下: 1 public class Person 2 { 3 public int ID { get; set; } 4 public string Name { get; set; } 5 public DateT...

aoyao9431的博客 376

5分钟搞定!用FunASR在本地快速部署达摩院Paraformer语音识别模型

本文提供了一份快速部署指南,教你如何在5分钟内利用FunASR工具包在本地电脑上启动达摩院Paraformer语音识别模型。Paraformer作为一款非自回归端到端模型,以其推理速度快、识别精度高的特点,结合FunASR的一键式模型加载和统一API,让开发者能轻松构建本地语音识别系统,极大降低了前沿AI技术的应用门槛。

q9w8e7r6t5的博客 605

别再乱选保护板了!手把手教你用ABLIC S-8254A为3/4串锂电池组DIY安全保护电路

本文详细介绍了如何使用ABLIC S-8254A保护集成电路为3/4串锂电池组DIY安全保护电路。从选型策略、电路搭建到功能验证,手把手教你实现可靠的充放电保护系统,适用于无人机、电动工具等场景,确保锂电池组的安全使用。

weixin_42525264的博客 189

JavaScriptSerializer中日期序列化问题解决方案

JavaScriptSerializer中日期序列化问题解决方案

runwuwushengxiyu的博客 177

8155平台multi-display(多屏显示)原理与配置

8155平台多屏互动原理与配置

漂流瓶の海岸 1606

使用JavaScriptSerializer进行序列化日期类型应该注意的问题

JavaScriptSerializer在序列化DateTime时,是用刻度来表示的,具体在Json体现为:\/Date(315547200000)\/  用V进行一个闭包, 括号内为Date的刻度,刻度就是时间滴答滴答经过的毫秒数,刻度计算的赶止时间为:UTC 1970年1月1日午夜开始的, 注意该起止时间是UTC时间,看看以下程序: Customer cs = new Customer()

肖申克的救赎.com 2697

【INMP441】 MEMS麦克风,让硬件“听得见”,更要“听得清”

INMP441是一款数字MEMS麦克风,采用PDM接口输出高质量数字音频信号。相比传统模拟麦克风,它具有高度集成、抗干扰强、功耗低等优势,支持通过时钟启停实现软件控制开关。该麦克风体积小巧但功能强大,内置MEMS传感器、ADC转换器等模块,适合智能音箱、语音遥控等应用。工程师可通过ESP32等主控芯片轻松连接INMP441,利用多麦克风阵列实现波束成形等高级功能。INMP441展现了数字音频采集的先进技术,为创客和智能硬件开发者提供了优秀的音频解决方案。

深耕CV 1536

多天线技术:5G波束成形&空间复用&空时编码

以提升信号的可靠性。然而,在20世纪90年代中期,研究者们惊讶地发现,多天线技术不仅仅提供分集增益,还可以开启一些单天线系统无法实现的新机遇。,我们可以将信道矩阵 ( H ) 视为一个满秩矩阵,则理论上可以建立min(𝑁𝑇,𝑁𝑅)个独立的数据流,形成一个。波束成形是5G物理层的核心技术,其本质是利用多个天线来增强特定方向上的信号,同时抑制干扰方向的信号。:物理波束成形 = 🔦 类似手电筒的聚焦光束,虚拟波束成形 = 🌊 类似水波的相干叠加。随着 5G 和 6G 时代的到来,多天线技术的作用愈发重

weixin_43199439的博客 1389

JavaScriptSerializer转换datatime格式为json出现/Data(时间戳)/

public class DateTimeJavaScriptConverter : JavaScriptConverter { public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serial...

diepaosang0592的博客 297

图神经网络实战(2)——图论基础

图论 (Graph theory) 是数学的一个基本分支,涉及对图研究。图是复杂数据结构的可视化表示,有助于理解不同实体之间的关系。图论提供了大量建模和分析现实问题的工具,如交通系统、社交网络和互联网等。在本节中,将介绍图论的基本原理,主要涉及三个方面:图属性、图概念和图算法。

盼小辉丶的博客 1万+

C#中JSON的序列化和反序列化

C#在System.Web.Script.Serialization命名空间中提供了一个JavaScriptSerializer类,该类可实现JSON的序列化和反序列化。但该类有个小问题,就是关于DateTime类型数据的序列化问题,先看一段代码: using System; using System.Collections.Generic; using System.Linq; using Sy...

HerryDong的博客 5133

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JavaScriptSerializer 对 DateTime 数据类型的JSON序列化的问题

  System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();            StringBuilder sb = new StringBuilder();            string jsonRe

雪后残阳 877

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

日期格式序列化成JSON格式时的处理方式

  在使用JSON格式数据响应Ajax请求的时候一般都使用JavaScriptSerializer类的一个实例方法:Serialize(object obj),但是这个方法在序列化日期类型数据的时候是将DateTime类型的数据序列化为形如这种字符串格式的日期:"/Date(1342822827000)/",前端的js获得数据后还需要进一步处理,将其转换成我们能看得懂的时间格式,如:20...

ddmz57703的博客 482

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

使用JavaScriptSerializer进行JSON序列化

JSON是Javascript中常用的数据格式,然而,在.NET 2.0中没有内置序列化JSON的类,原因估计是当时Ajax尚未兴起。后来就有人写了一个Json.NET类库。.NET 3.5新增了一个把对象序列化为JSON字符串的类JavaScriptSerializer。这个类位于System.Web.Script.Serialization名字空间中(非Web项目需要添加System.Web.

情傷 1420

JavaScriptSerializer 在序列化时间datetime类型是会有时区差异

JavaScriptSerializer与DataContractJsonSerializer(命名空间System.ServiceModel.Web及System.Runtime.Serialization) JavaScriptSerializer在序列化时间datetime类型是会有时区差异,JavaScriptSerializer会将时间转成utc类型 DataCo...

weixin_30588907的博客 329

驳Fish Li 在文章《ASP.NET常被忽视的一些细节》 对.Net JavaScriptSerializer处理DateTime的误解...

原帖地址:http://www.cnblogs.com/leonwang/archive/2013/05/29/javascript-datetime.htmlFish Li今天发了一篇火爆的《ASP.NET常被忽视的一些细节》,其中有一个地方我认为他大大的冤枉了微软.Net 类库设计人员,你打开链接就直接跳到了重点,先直接粘贴过来引用如下: Fish Li DateTime的JSON序列化...

我的技术资料收集库 141

json序列化时datetime的处理方法

.net自带的json序列化器,JavaScriptSerializer和DataContractJsonSerializer,都是序列化成微软的datetime json格式,e.g. "\/Date(1198908717056)\/" 如果你将json序列化器换成json.net,可能会碰到序列化datetime格式的问题。 json.net的行为是这样的。 <=4.5,...

weixin_30414245的博客 257

MySQL中json数据转换成数组_数据库的值获取过来转换成Json数组的方法

.cs文件的主要代码:publicclassUser_List //这个类是对应是Extjs的Grid的field里面的,field有几项就写几项{publicintVoteID =0;publicstringVoteName ="";publicDateTime SystemDateTime =DateTime.Parse(DateTime.Today.AddDays(1).ToString("...

weixin_42299756的博客 1987
上一篇: ASP.NET程序中常用的三十三种代码
下一篇: 观察者模式
make1828
博客等级 码龄19年 60粉丝 105原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值