首页 新闻 会员 周边 捐助

在转换为 UTC 时大于 DateTime.MaxValue 或小于 DateTime.MinValue 的 DateTime 值无法系列化为 JSON。

0
悬赏园豆:50 [已解决问题] 解决于 2010-08-18 10:45

在转换为UTC时大于DataTime.MaxValue

问题补充: 方法如下: public static string SerializedModel<T>(string jsonName, IList<T> IL) { StringBuilder Json = new StringBuilder(); Json.Append("{" + jsonName + ":"); if (IL.Count > 0) { for (int i = 0; i < 1; i++) { //Json.Append("{"); var stream = new MemoryStream(); var serializer = new DataContractJsonSerializer(typeof(IList<T>)); serializer.WriteObject(stream, IL); byte[] dataBytes = new byte[stream.Length]; stream.Position = 0; stream.Read(dataBytes, 0, (int)stream.Length); string dataString = Encoding.UTF8.GetString(dataBytes); Json.Append(dataString); //Json.Append("}"); //if (i < IL.Count - 1) //{ // Json.Append(","); //} } } Json.Append("}"); return Json.ToString(); } 就在序列化时报错。
kingab的主页 kingab | 初学一级 | 园豆:135
提问于:2010-08-18 09:49
< >
分享
最佳答案
0

啥意思?

你是把一个字符串转换为 DateTime 类型吗?

收获园豆:50
Launcher | 高人七级 |园豆:45050 | 2010-08-18 09:53
类似。我从Oracle中取数据,然后,再转换,显示到页面
kingab | 园豆:135 (初学一级) | 2010-08-18 09:57
@kingab:Oracle 中取出的字符串,还是别的如日期的binary或uint64表示方式? 能否把从数据库中取出的值给出来?
Launcher | 园豆:45050 (高人七级) | 2010-08-18 10:02
你的这个 T 类型应该是包含一个 DateTime 类型的字段吧!
Launcher | 园豆:45050 (高人七级) | 2010-08-18 10:14
是的。 它的这个字段本来是空值。 传进去后是“0001-01-01 :00:00:00”
kingab | 园豆:135 (初学一级) | 2010-08-18 10:20
@kingab:你把 T 的那个 DateTime 字段定义为 DateTime? 类型,表示该字段为可为 null 的值类型,json在序列化时应该把该字段设置为 null ,或者在该字段为 null 时不序列化。
Launcher | 园豆:45050 (高人七级) | 2010-08-18 10:30
不知道你数据库中怎么定义的这个字段,如果允许空值,你取该字段时,用 IsDBNull 判断下,如果为 null ,那么你就给你的 DateTime? 字段也赋值为 null.
Launcher | 园豆:45050 (高人七级) | 2010-08-18 10:31
数据库中可以为空的
kingab | 园豆:135 (初学一级) | 2010-08-18 10:41
我试着改改,本来是DataTime? ,被我改过。
kingab | 园豆:135 (初学一级) | 2010-08-18 10:42
问题解决了。谢谢。
kingab | 园豆:135 (初学一级) | 2010-08-18 10:45
其他回答(1)
0

直接tostring不可以吗。

Astar | 园豆:40805 (高人七级) | 2010-08-18 10:01
我定义了两个地方都是DataTime类型的。
支持(0) 反对(0) kingab | 园豆:135 (初学一级) | 2010-08-18 10:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册