JSON

DataContractJsonSerializer转换JSON日期格式YYYY-MM-DD

字号+ 作者:H5之家 来源:H5之家 2017-10-14 12:21 我要评论( )

使用.NET的DataContractJsonSerializer转换JSON格式数据,其中DateTime类型的转换后内容格式为Date(1261443890904+0800),请教怎么能转换为“YYYY-MM-DD”的格式

使用.NET的DataContractJsonSerializer转换JSON格式数据,其中DateTime类型的转换后内容格式为 Date(1261443890904+0800),请教怎么能转换为“YYYY-MM-DD”的格式?

有达人说需要转换完对字符串中日期格式重新处理,有没有其他的办法呢?

现在框架里生成json用的jackson。优点多多,自不待言。
今天解析data类型的数据时生成的是毫秒时间戳,就是一大串数字的那个东西,这个串(1369208023078)谁也看不明白,当然是不能显示到页面上的。
如果想按照要求格式化这个时间戳,网上查了一下有两种办法。这里简单说说一种用注解办法解决的。
 
第一,写一个序列化Date类型的类,该类继承自com.fasterxml.jackson.databind.JsonSerializer。
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 来处理。
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);

 
结果:注意有效期

  "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#直接用DataContractJsonSerializer处理就可以了。
  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;

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评