DataContractJsonSerializer转换JSON 日期格式的问题

豆丁_ 2013-05-28 10:54:23
各位请教个问题,使用.NET的DataContractJsonSerializer转换JSON格式数据,其中DateTime类型的转换后内容格式为 Date(1261443890904+0800),请教怎么能转换为“YYYY-MM-DD”的格式?

有达人说需要转换完对字符串中日期格式重新处理,有没有其他的办法呢??
...全文
557 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoziguo1 2015-12-18
  • 打赏
  • 举报
回复
            DataContractJsonSerializerSettings st = new DataContractJsonSerializerSettings();

            if (!string.IsNullOrEmpty(dateFormat)) st.DateTimeFormat = new System.Runtime.Serialization.DateTimeFormat(dateFormat);
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T), st);
            MemoryStream ms = new MemoryStream();
            ser.WriteObject(ms, t);
            string jsonString = Encoding.UTF8.GetString(ms.ToArray());
            ms.Close();
            return jsonString;
qldsrx 2013-05-29
  • 打赏
  • 举报
回复
引用 5 楼 qiao5213 的回复:
手动如何处理?
你是要用什么程序处理,C#、Java、JavaScript、C++、C、ISO??? C#直接用DataContractJsonSerializer处理就可以了。
qldsrx 2013-05-28
  • 打赏
  • 举报
回复
DataContractJsonSerializer在反序列化的时候自动处理,即使手动处理也很简单,那个数字的含义是与1970年1月1日的毫秒数之差。 楼上不懂C#就别乱入了。
黄泉颤抖 2013-05-28
  • 打赏
  • 举报
回复
这是java用注解形式解决的方法。希望对你有启发
黄泉颤抖 2013-05-28
  • 打赏
  • 举报
回复
现在框架里生成json用的jackson。优点多多,自不待言。 今天解析data类型的数据时生成的是毫秒时间戳,就是一大串数字的那个东西,这个串(1369208023078)谁也看不明白,当然是不能显示到页面上的。 如果想按照要求格式化这个时间戳,网上查了一下有两种办法。这里简单说说一种用注解办法解决的。 第一,写一个序列化Date类型的类,该类继承自com.fasterxml.jackson.databind.JsonSerializer。 1 2 3 4 5 6 7 8 9 public class CustomDateSerializer extends JsonSerializer<Date> { @Override public void serialize(Date value, JsonGenerator jgen, SerializerProvider provider) throws IOException, JsonProcessingException { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = formatter.format(value); jgen.writeString(formattedDate); } } 第二,在data类型的属性geter方法上打注解,告诉jackson,这个属性生成json时用CustomDateSerializer 来处理。 1 2 3 4 5 6 private Date yxq; @JsonSerialize(using = CustomDateSerializer.class) public Date getYxq() { return yxq; } 第三,生成json 1 2 3 YpdmSimple obj = new YpdmSimple (); String json = JsonUtil.toJson(obj ); System.out.println(json); 结果:注意有效期 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 { "pym" : "gpgdd", "ypbm" : "00001100", "tym" : "骨盆固定带", "cd" : "山东潍坊", "ypgg" : "1*", "yklsj" : 2.0000, "pc" : "0000000001", "ph" : "23", "yxq" : "2012-05-20", "kcl" : 23.0000, "jhj" : 23.0000, "cfbl" : 2, "ykpfj" : null, "ykdw" : null }
豆丁_ 2013-05-28
  • 打赏
  • 举报
回复
引用 3 楼 qldsrx 的回复:
DataContractJsonSerializer在反序列化的时候自动处理,即使手动处理也很简单,那个数字的含义是与1970年1月1日的毫秒数之差。 楼上不懂C#就别乱入了。
手动如何处理?
showjim 2013-05-28
  • 打赏
  • 举报
回复
我觉得你可以添加一个属性自己ToString() 如果这种情况多的话,应该自定义一个time类

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧