DataContractJsonSerializer转换JSON 日期格式的问题 各位请教个问题,使用.NET的DataContractJsonSerializer转换JSON格式数据,其中DateTime类型的转换后内容格式为 Date(1261443890904+0800),请教怎么能转换为“YYYY-MM-DD”的格式?有达人说需要转换完对字符串中日期格式重新处理,有没有其他的办法呢?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 现在框架里生成json用的jackson。优点多多,自不待言。今天解析data类型的数据时生成的是毫秒时间戳,就是一大串数字的那个东西,这个串(1369208023078)谁也看不明白,当然是不能显示到页面上的。如果想按照要求格式化这个时间戳,网上查了一下有两种办法。这里简单说说一种用注解办法解决的。 第一,写一个序列化Date类型的类,该类继承自com.fasterxml.jackson.databind.JsonSerializer。123456789 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 来处理。123456 private Date yxq; @JsonSerialize(using = CustomDateSerializer.class)public Date getYxq() { return yxq;} 第三,生成json123 YpdmSimple obj = new YpdmSimple ();String json = JsonUtil.toJson(obj );System.out.println(json); 结果:注意有效期12345678910111213141516 { "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} 这是java用注解形式解决的方法。希望对你有启发 DataContractJsonSerializer在反序列化的时候自动处理,即使手动处理也很简单,那个数字的含义是与1970年1月1日的毫秒数之差。楼上不懂C#就别乱入了。 我觉得你可以添加一个属性自己ToString()如果这种情况多的话,应该自定义一个time类 你是要用什么程序处理,C#、Java、JavaScript、C++、C、ISO???C#直接用DataContractJsonSerializer处理就可以了。 Datalist中DataBinder.Eval功能 控制 ,大神来看看 急! C# 操作word如何改变文字方向 请教个小问题【100分】~ 三层传值问题 线程的问题,各位帮下忙啊 问一条sql语句,帮帮 窗体参数传递问题!!高手指点!!! C#和C++各方面优劣比较!谈谈哪个更好? 学习remoting时 《web service--Remoting》chapter6出错:其他信息: 由于安全限制,无法访问类型 System.Runtime.Remoting.ObjRef。 一个关于水晶报表的问题! treeview问题 关于GUID,不能理解,谁来解释一下?
今天解析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
}
楼上不懂C#就别乱入了。
如果这种情况多的话,应该自定义一个time类
C#直接用DataContractJsonSerializer处理就可以了。