Java笔记-JSONObject序列化包含Date类型数据的Java对象
来源:互联网 发布:最优化理论与方法视频 编辑:程序博客网 时间:2024/06/07 20:27
问题场景
在Java里面,会遇到这样的问题:数据库中存在TIMESTAMP类型的数据,这样Bean对象里面就会有Date(java.util.Date)类型参数,我们使用JSONObject将对象序列化的时候,会发现Date属性被分隔成年、月、日、时、分、秒等子对象了,这肯定不符合我们的期望。
解决方案
使用json-lib包提供的JsonConfig可以在处理Java对象和Json互转时过滤属性值,具体的方案如下:
- 创建日期处理器类
利用SimpleDateFormat将Date类型的数据format一下,该类实现了JsonValueProcessor接口。
public class JsonDateValueProcessor implements JsonValueProcessor { private String format = "yyyy-MM-dd HH:mm:ss"; public JsonDateValueProcessor() { super(); } public JsonDateValueProcessor(String format) { // 自己需要的格式 super(); this.format = format; } @Override public Object processArrayValue(Object value, JsonConfig paramJsonConfig) { return process(value); } @Override public Object processObjectValue(String key, Object value, JsonConfig paramJsonConfig) { return process(value); } private Object process(Object value) { if (value instanceof Date) { SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.CHINA); return sdf.format(value); } return value == null ? "" : value.toString(); }}
- 使用方式
处理单个bean
JsonConfig jsonConfig = new JsonConfig();jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());JSONObject json = new JSONObject(); json.fromObject(object, jsonConfig)
处理beanList
List<Object> objects = new ArrayList<>();JsonConfig jsonConfig = new JsonConfig();jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());JSONArray taskArray = JSONArray.fromObject(objects, jsonConfig);
处理map
JsonConfig jsonConfig = new JsonConfig();jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());JSONObject json = new JSONObject();json.putAll(Map, jsonConfig);
阅读全文
0 0
- Java笔记-JSONObject序列化包含Date类型数据的Java对象
- java的Date类型数据
- java JSONObject对象序列化与反序列化
- [学习笔记]Java基础_IO(包含对象流序列化使用和RandomAccessFile 类的使用)
- JSONObject处理Date类型 java.sql.Date 转化java.util.Date 问题
- [JAVA]:JSONObject 修改 date 格式
- 将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
- JSONObject转Java对象的方法
- java的JsonObject对象提取值
- ExtJs gridpanel展示Java返回的date类型数据
- java处理数据库date类型数据
- Java生成Date类型数据一例
- Java中Date类型数据比较方法
- jdbc的Date类型处理,解决java.util.date与java.sql.date的时间数据丢失
- JAVA的对象序列化
- JAVA的对象序列化
- java的对象序列化
- Java对象的序列化
- 如何对excel某一列的数据进行分列
- cocos2dx c++.lua +listView
- 下拉刷新框架
- PLSQL Developer(安装、连接、汉化、注册图文教程)
- 【循环矩阵+矩阵快速幂】Cellular Automaton UVA
- Java笔记-JSONObject序列化包含Date类型数据的Java对象
- swift webview error = 999
- centos7.2+python2.7 gdal安装教程(校园网开启防火墙,无法使用yum,pip等工具)
- 勒索病毒爆发,CrowdStrike获1亿美元融资
- Android打开adb时出现弹出框未安装AdbWinApi.dll的解决方案
- mybatis
- 【单链表经典面试题解析二】删除一个无头单链表的非尾节点(不能遍历链表)
- 简化Kubernetes应用部署工具-Helm安装
- 【C#基础知识】获取网卡的ip地址和MAC