专栏首页卯金刀GGJSONObject.fromObject 转换JSON字符串Map及javabean时间处理的问题

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

这几天的项目开发过程中遇到一个比较棘手的问题,主要是通用导出类中,使用了一个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 .....}]

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • oracle wm_concat 拼接乱码

    针对oracle拼接函数的乱码,首先查询一下oracle字符的编码是否支持中文,查询语句: SELECT * FROM NLS_DATABASE_PARAMET...

    用户5640963
  • 【leetcode算法-无重复字符的最长子串】

    滑动窗口,通过使用 HashSet 作为滑动窗口,我们可以用 O(1) 的时间来完成对字符是否在当前的子字符串中的检查。滑动窗口是数组/字符串问题中常用...

    用户5640963
  • Synchronized 偏向锁、轻量级锁、自旋锁、锁消除

      上篇文章中向大家介绍了Synchronized的用法及其实现的原理。现在我们应该知道,Synchronized是通过对象内部的一个叫做监视器锁(monito...

    用户5640963
  • TBSSQL 的那些事 | TiDB Hackathon 2018 优秀项目分享

    算起来这应该是第三次参加的 Hackathon 了,第一次参加的时候还是在小西天的豌豆荚,和东旭一起,做跨平台数据传输的工具,两天一夜;第二次和奇叔一起在 3W...

    PingCAP
  • 设计故事 | QQ 20周年H5刷屏幕后

    ? 腾讯ISUX isux.tencent.com 社交用户体验设计 ? ? 01 项目概述 | Overview QQ20周年,是互联网产品长青的一个传说...

    腾讯ISUX
  • QQ 20周年H5刷屏幕后

    ? 01 项目概述 | Overview QQ20周年,是互联网产品长青的一个传说,就在20周年的时间节点,QQ向用户提供一份关于他自己的、真诚热切的QQ数据...

    腾讯大讲堂
  • 卷积神经网络(CNN)前向传播算法

        在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的。重点会和传统的...

    刘建平Pinard
  • Oracle中的PGA监控报警分析(r11笔记第96天)

    最近接到一个数据库报警,让我颇有些意外,这是一个PGA相关的报警。听起来感觉是应用端的资源调用出了问题。 报警内容大体如下: 报警内容: PGA Alarm o...

    jeanron100
  • 卷积神经网络的前向传播算法详解

    这篇干货 我们在CNN的模型基础上,看看CNN的前向传播算法是什么样子的。重点会和传统的DNN比较讨论。 CNN结构回顾 CNN的结构,包括输出层,若干的卷积层...

    企鹅号小编
  • Python——爬虫入门 Urllib库的使用

    最近在系统的学习Python爬虫,觉得还是比较有意思的,能够干很多的事情,所以也写点文章记录一下学习过程,帮助日后回顾。

    Originalee

扫码关注云+社区

领取腾讯云代金券