Java对象/集合中的Date类型如何成功转化为JSON?

版权声明:本文为小盒子原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35393693/article/details/88355504

今天项目中遇到一个问题,如下图所示。

遇到了该集合对象中有多个Date类型的字段,我又不想麻烦的将所有Date转成String类型,再生成JSON,认真研究了一下,在网上找到了解决方法。

使用net.sf.json.JSONObject进行转换,pom.xml文件中引入依赖的jar包:

 <dependency>
		<groupId>net.sf.json-lib</groupId>
		<artifactId>json-lib</artifactId>
		<version>2.4</version>
		<classifier>jdk15</classifier>
</dependency>

创建一个工具类JsonDateValueProcessor,实现了JsonValueProcessor接口:

package com.zcjy.os.common.util;

import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;

/**
 * date与json互转工具类
 * @author www.i-ronge.com
 *
 */
public class JsonDateValueProcessor implements JsonValueProcessor{

	private  String datePattern = "yyyy-MM-dd HH:mm:ss";//默认样式,可以在构造方法中修改

	public JsonDateValueProcessor() {
		super();
	}

	public JsonDateValueProcessor(String datePattern) {
		super();
		this.datePattern = datePattern;
	}

	public Object processArrayValue(Object value, JsonConfig jsonConfig) {
		try {
			if(value instanceof Date){
				SimpleDateFormat sdf = new SimpleDateFormat(datePattern);
				Date date = (Date)value;
				return sdf.format(date);
			}
			return value == null ? null : value.toString();
		} catch (Exception e) {
			return null;
		}
	}

	public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
		return processArrayValue(value, jsonConfig);
	}

	public String getDatePattern() {
		return datePattern;
	}

	public void setDatePattern(String datePattern) {
		this.datePattern = datePattern;
	}

}

需要使用JSONConfig对象,对传入的数据,进行处理:

JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
JSONObject jsonObject = JSONObject.fromObject(case1,jsonConfig); 

如果传入的为集合则需要将JSONObject 换为JSONArray

List<QueryMsgReceive> queryLetterList=msgReceiveService.queryMsgReceiveByInbox(msgReceive, page);// 查询站内信收件箱
JSONObject object = new JSONObject();
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
JSONArray jo = JSONArray.fromObject(queryLetterList,jsonConfig);
object.put("queryLetterList", jo.toString());

转化后的数据格式如下所示:

{
		"addTime": "2019-03-08 16:44:12",
		"content": "管理员给您赠送了【<a class=\"course-title c-333\" target=\"_blank\" href=\"http://www.i-ronge.com/front/couinfo/276\">资本市场<\/a>】快去学习吧!",
		"cusId": 0,
		"cusName": "",
		"friNum": 0,
		"groupId": 0,
		"groupName": "",
		"groupNum": 0,
		"id": 36248,
		"letterNum": 0,
		"receivingCusId": 23289,
		"remarks": "",
		"showname": "疯狂小石头一号",
		"status": 1,
		"systemNum": 0,
		"type": 1,
		"unReadNum": 0,
		"updateTime": "2019-03-08 16:44:12",
		"userExpandDto": null
}

猜你喜欢

转载自blog.csdn.net/qq_35393693/article/details/88355504