JSONArray序列化日期最初用到, 这个是全局设置,会有风险。
String[] dateFormats = new String[] {"yyyyMMdd"};
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
针对每一个特定的时间进行解析。
JsonConfig config = new JsonConfig();
config.registerJsonValueProcessor(Date.class, new JsonValueProcessor() {
SimpleDateFormat dateformat0 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
SimpleDateFormat dateformat1 = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
@Override
public Object processArrayValue(Object arg0, JsonConfig arg1) {
if(arg0 instanceof Date) {
try {
return dateformat0.parse(arg0.toString());
} catch (ParseException e0) {
try {
return dateformat1.parse(arg0.toString());
} catch (ParseException e1) {}
}
}
return null;
}
@Override
public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {
if(arg1 instanceof Date) {
try {
return dateformat0.parse(arg0.toString());
} catch (ParseException e0) {
try {
return dateformat1.parse(arg0.toString());
} catch (ParseException e1) {}
}
}
return null;
}});
JSONArray jsonArray = JSONArray.fromObject(jsonString,config);
List<TraceLog> list = (List<TraceLog>) jsonArray.toCollection(jsonArray, TraceLog.class);