前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JSONObject.fromObject 转换JSON字符串Map及javabean时间处理的问题

JSONObject.fromObject 转换JSON字符串Map及javabean时间处理的问题

作者头像
用户5640963
发布2019-07-26 10:00:34
1.1K0
发布2019-07-26 10:00:34
举报
文章被收录于专栏:卯金刀GG

这几天的项目开发过程中遇到一个比较棘手的问题,主要是通用导出类中,使用了一个javabean转换成json字符串的问题,javabean中一个日期格式是“yyyy-MM-dd”,转成json以后的格式,变成了updatetime={day=24,year=2012...} 样子的。

我们可以看出JSONObject net.sf.json.JSONObject.fromObject(Object object, JsonConfig jsonConfig)还接受一个JsonConfig对象,那么我们就应该从这里入手。

1、写一个value处理类(UtilDateProcessor .java)

package cn.qazit.common.utils;

import java.text.SimpleDateFormat; import java.util.Date;

import java.util.Locale;

import net.sf.json.JsonConfig; import net.sf.json.processors.JsonValueProcessor;

public class UtilDateProcessor implements JsonValueProcessor {

/** * /** * 字母 日期或时间元素 表示 示例 <br> * G Era 标志符 Text AD <br> * y 年 Year 1996; 96 <br> * M 年中的月份 Month July; Jul; 07 <br> * w 年中的周数 Number 27 <br> * W 月份中的周数 Number 2 <br> * D 年中的天数 Number 189 <br> * d 月份中的天数 Number 10 <br> * F 月份中的星期 Number 2 <br> * E 星期中的天数 Text Tuesday; Tue<br> * a Am/pm 标记 Text PM <br> * H 一天中的小时数(0-23) Number 0 <br> * k 一天中的小时数(1-24) Number 24<br> * K am/pm 中的小时数(0-11) Number 0 <br> * h am/pm 中的小时数(1-12) Number 12 <br> * m 小时中的分钟数 Number 30 <br> * s 分钟中的秒数 Number 55 <br> * S 毫秒数 Number 978 <br> * z 时区 General time zone Pacific Standard Time; PST; GMT-08:00 <br> * Z 时区 RFC 822 time zone -0800 <br> */ private String format = "yyyy-MM-dd "; //自定义时间格式化的样式 public UtilDateProcessor() { super(); // TODO Auto-generated constructor stub } public UtilDateProcessor(String format) { this.format = format; } @Override public Object processArrayValue(Object arg0, JsonConfig arg1) { String[] obj = {}; if (arg0 instanceof Date[]) { SimpleDateFormat sf = new SimpleDateFormat(format); Date[] dates = (Date[]) arg0; obj = new String[dates.length]; for (int i = 0; i < dates.length; i++) { obj[i] = sf.format(dates[i]); } } return obj; }

@Override public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) { return process(arg1); } private Object process(Object value) { try { if (value instanceof Date) { SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.UK); return sdf.format((Date) value); } return value == null ? "" : value.toString(); } catch (Exception e) { return ""; }

}

public String getFormat() { return format; }

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

2、在实例类中,加上以下代码

JsonConfig jsonConfig = new JsonConfig(); jsonConfig.registerJsonValueProcessor(java.sql.Timestamp.class,new UtilDateProcessor("yyyy-MM-dd")); JSONObject jsonObject = JSONObject.fromObject(src, jsonConfig);

打印如下输出:

[{QHSHI=重庆市, JCBGRQ=2016-12-22 00:00:00.0 .....}]

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档