java中模型转json对象时,时间属性格式不正确问题的解决
来源:互联网 发布:知乎主要用户群体 编辑:程序博客网 时间:2024/05/28 14:57
模型转json对象,在实际编码中的运用应该是很频繁的。
常用的包有Gson、net.sf.json等。
在使用net.sf.json的fromObject()方法时,Date日期格式的属性总会被转成year-mouth-day等可读性很差的格式,而我们想要的格式一般应该是:“yyyy-MM-dd HH:mm:ss”或者long类型,那么应该怎么处理呢?
利用JsonObject和JsonArray的重载方法:
public static JSONArray fromObject(Object object, JsonConfig jsonConfig)
利用这个方法,我们就能指定某类型的数据按照我们想要的格式去处理。
以日期格式为例:
新建一个类MyJsonConfig,继承自JsonConfig类,在类的构造方法中,调用
public void registerJsonValueProcessor(Class propertyType, JsonValueProcessor jsonValueProcessor)
方法来注册一个类型处理器,我们把Date类型处理器的名称定为:
class JsonDateValueProcessor implements JsonValueProcessor
然后我们实现JsonValueProcessor接口的方法:
@Override public Object processArrayValue(Object o, JsonConfig jsonConfig) { return this.process(o); } @Override public Object processObjectValue(String s, Object o, JsonConfig jsonConfig) { return this.process(o); } private Object process(Object value) { if (value instanceof Date) { if (type.equals(Long.class)) { return ((Date)value).getTime(); } else if (type.equals(String.class)) { SimpleDateFormat sdf = new SimpleDateFormat(this.dateFormat); return sdf.format(value); } } return value == null ? "" : value.toString(); }
综上,一个完整的MyJsonConfig类的实现如下:
package cn.xxx.tech.utils.JSON;import net.sf.json.JsonConfig;import net.sf.json.processors.JsonValueProcessor;import java.text.SimpleDateFormat;import java.util.Date;public class MyJsonConfig extends JsonConfig { class JsonDateValueProcessor implements JsonValueProcessor { private final String dateFormat ="yyyy-MM-dd HH:mm:ss"; private Class type; public JsonDateValueProcessor (Class type) { this.type = type; } public JsonDateValueProcessor() { this.type = String.class; } @Override public Object processArrayValue(Object o, JsonConfig jsonConfig) { return this.process(o); } @Override public Object processObjectValue(String s, Object o, JsonConfig jsonConfig) { return this.process(o); } private Object process(Object value) { if (value instanceof Date) { if (type.equals(Long.class)) { return ((Date)value).getTime(); } else if (type.equals(String.class)) { SimpleDateFormat sdf = new SimpleDateFormat(this.dateFormat); return sdf.format(value); } } return value == null ? "" : value.toString(); } } public MyJsonConfig(Class type) { super(); this.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor(type)); } public MyJsonConfig() { super(); this.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor(String.class)); }}
使用方法:
JSONArray dataJsonArray = JSONArray.fromObject(resultList, new MyJsonConfig());
0 0
- java中模型转json对象时,时间属性格式不正确问题的解决
- js获取json对象中正确的时间格式
- 解决Visio画图复制到word中格式不正确的问题
- Spring AMQP 发送JSON格式的对象及Java 8时间转换成JSON格式
- JAVA对象转JSON格式的字符串
- 解决打开GitHub网站格式不正确的问题
- fastjson下对象转json时丢失属性的问题
- 微信开发中json格式不正确
- 解决对象与JSON解析时属性不对应+空字符串+枚举的问题
- java对象转json格式
- 解决js中字符串格式的时间比较问题
- java web/tomcat项目中Date类获取时间不正确的问题
- json格式的时间显示问题
- SimpleDateFormat时间不正确的问题
- 解决springMVC中restful的POST请求时接受json对象转换pojo对象失败问题
- 关于Json格式中时间格式转化问题
- java解决手机等移动设备中照片上传至服务器方向不正确的问题
- 对json中时间格式的处理
- QMetaMethod 获取成员函数的元信息
- jQuery.get() AJAX函数详解
- android 应用组件[通用 Intent---以静态图像模式启动相机应用] 七
- 私有存储云如何构建?
- Distinct Package Manager
- java中模型转json对象时,时间属性格式不正确问题的解决
- java基础知识(七)--Object类
- xml头文件和jar包版本不一致
- 如何识别图像边缘?
- 堆与堆排序--递归与非递归java实现
- 下载数据库文件到指定目录
- 一台电脑同时使用GitLab和GitHub仓库
- 计算器代码
- mysql索引(一)