问题:
Java后台使用list转json,遇到实体类有Date类型的字段,获取到的日期格式不是我们想要的。
如:
"businessDate": {"date": 9,"day": 6,"hours": 10,"minutes": 36,"month": 4,"seconds": 51,"time": 1588991811000,"timezoneOffset": -480,"year": 120}
希望得到的结果:
"businessDate": "2020-05-09 10:36:51"
解决方法:添加自定义的日期格式转化类
public class JsonDateValueProcessor implements JsonValueProcessor {
private String format = "yyyy-MM-dd HH:mm:ss";
public JsonDateValueProcessor(String format) {
this.format = format;
}
public JsonDateValueProcessor() {
}
@Override
public Object processArrayValue(Object value, JsonConfig config) {
return process(value);
}
@Override
public Object processObjectValue(String key, Object value, JsonConfig config) {
return process(value);
}
private Object process(Object value){
if(value instanceof Date){
SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.UK);
return sdf.format(value);
}
return value == null ? "" : value.toString();
}
}
使用方法:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(Date.class,new JsonDateValueProcessor());
JSONArray jsonArray = JSONArray.fromObject(list,jsonConfig);