将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型

将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型

问题描述:

java里面时间类型转换成json数据就成这样了:
"createTime":{"date":30,"day":3,"hours":15,"minutes":14,"month":3,"nanos":0,"seconds"
:38,"time":1209539678000,"timezoneOffset":-480,"year":108}
期望的结果:

将date转化成yyyy-MM-dd形式

解决方案:

注册时间字段处理器,使用jsonconfig即可:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss"));
JSONObject jsonObj = JSONObject.fromObject(map, jsonConfig);

class DateJsonValueProcessor implements JsonValueProcessor {
private String format = "yyyy-MM-dd";

public DateJsonValueProcessor() {
}

public DateJsonValueProcessor(String format) {
this.format = format;
}

public Object processArrayValue(Object value, JsonConfig jsonConfig) {
String[] obj = {};
if (value instanceof Date[]) {
SimpleDateFormat sf = new SimpleDateFormat(format);
Date[] dates = (Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sf.format(dates[i]);
}
}
return obj;
}

public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
if (value instanceof Date) {
String str = new SimpleDateFormat(format).format((Date) value);
return str;
}
return value.toString();
}

public String getFormat() {
return format;
}

public void setFormat(String format) {
this.format = format;
}

}

时间: 2024-11-02 23:27:34

将java.util.Date类型转换成json时,使用JsonValueProcessor将date转换成希望的类型的相关文章

synchronized/java.util.concurrent.locks.Loc/如何格式化日期/将字符“12345”转换成long型

1.简述synchronized和java.util.concurrent.locks.Lock的异同?解答:主要相同点:Lock能完成synchronized所实现的所有功能 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能.synchronized会自动释放锁,而Lock一定要求程序员手工释放,并且必须在finally从句中释放. 2.如何格式化日期解答:Date now=new Date();SimpleDateFormat sdf=new SimpleDate

GSON将Java对象转成JSON时,如何排除某些字段

GSON 是Google发布的 JSON 序列化/反序列化工具,非常容易使用.本文简要讨论在使用GSON将Java对象转成JSON时,如何排除某些字段. 最简单的用法 假设有下面这个类: 1 class MyObj { 2 3 public int x; 4 public int y; 5 6 public MyObj(int x, int y) { 7 this.x = x; 8 this.y = y; 9 } 10 } 最简单的GSON用法如下所示: @Test public void gs

SpringMVC3.2 解决PO返回前台转成JSON时数据Long精度丢失问题

SpringMVC3.2  解决PO返回前台转成JSON时数据Long精度丢失问题 方案 1.自定义一个杰克逊的json转换类 public class LongToStringAdapter extends ObjectMapper { private static final long serialVersionUID = 4402127997078513582L; public LongToStringAdapter() { super(); SimpleModule simpleModu

含有Date类型的对象或集合转换成json时的问题

当我们把含有Date类型的对象或者集合直接转换为json,传回前台的时候不会报错,但是前台显示的时候是两个Object,而不会显示正常的日期. 当我们进debug调试的时候不会发现有错误,但是在解析JSON的时候就会发现: 在转换为JSON的过程中把date对象分开转化,即:年.月.日.时.分.秒,每个都当成一个对象给转化了. 这时候我们就需要做一些转换了 下面给大家提供一些大神给出常规的解决方案: 一:流星焱雨给出的解决方案 二:jadethao给出的解决方案 而当我们基本只需要临时显示日期的

json里的日期字符串 怎么 转换成 javascript 的 Date 对象?

“/Date(1232035200000)/” 怎么转换成  javascript 的 Date 对象 做法:new Date(+/\d+/.exec(value)[1]); value就是json字符串,字符串内容是 /Date(ticks)/,其中 ticks 表示从 epoch (UTC) 开始的毫秒数.因此,UTC 时间 1989 年 11 月 29 日 4:55:30 AM 将编码为“/Date(628318530718)/”.

JSON.stringify实例应用—将对象转换成JSON类型进行AJAX异步传值

在上一篇中,对JSON.stringify()方法有了初步的认识,并且做了一些简单的例子.本篇将进一步将JSON.stringify用在复杂些的实例中,例如如下需求: 在进jQuery AJAX异步传值时,用JSON.stringify()函数将数组转换成(JSON:JavaScript Object Notation 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式),再传到一般处理程序中,在一般处理程序中,把得到的值进行反序列化Deserialize<T>(v

Android:在设置Button上面的内容(含字母时)字母被强制转换成了大写

之前Button中的内容一直是中文,今天无意用了英文,偶然发现设置Button上面的内容(含字母时)字母被转换成了大写. 原因有可能是:Android 5.0的sdk在新建项目时的默认主题是android:theme="@style/AppTheme"的关系.当我把主题删掉后,回复正常了. 解决的办法有: 1.修改主题样式 2.在设置Button内容是加上android:textAllCaps="false",使其不会自动转换为大写 默认情况下(字母被转换成了大写)

第13题:整数转换成罗马数字&amp;第14题:罗马数字转换成整数

写在前面: 这两道题合起来写吧,其实整数转罗马数字我前天就写完了,当我想写罗马数转整数的时候竟然脑子一片空白,想了几分钟就想起来Map,本着学习的目的最终还是不想用Map,坚持C语言,今天脑子里直接涌出了Switch方式转换,看来"蹲在马桶上编程"的方式还是蛮不错的o(^▽^)o 整数转罗马数字:主要建立对应关系,输出时有点像百钱百鸡 罗马数字转整数:输入罗马数字(其实就是字符数组)后,for循环遍历,找出对应,这个再看不懂的建议去看看罗马数字表示方法. 第13题:整数转换成罗马数字

SQL SERVER 自定义函数 整数转成指定长度的16进制 转换成指定长度的16进制 不足补0

最近做项目扩展的时候,遇到问题就是将整型转换成指定长度的16进制 刚开始就是直接使用 cast(12 as varbinary(4))但是发现这个不能解决我的问题 所以就上网搜了一下,然后改了改,下面就是函数: 1 Create Function IntToHexLength(@Num int,@HxLength int) 2 returns varchar(16) 3 as 4 begin 5 declare @Mods int,@res varchar(16),@Length int 6 s