需要将一个List<Base> 转换成json,但是报如下错:
net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
catch了一下发现是日期转换的问题,json默认转换成java.sql.Date 而我的Base有字段是java.util.Date,
但是原Base实体又不能动,所以改变了json的转换方式:
代码:
JsonConfig jsonConfig = new JsonConfig(); jsonConfig.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor()); JSONArray obj = JSONArray.fromObject(datas,jsonConfig);代码: class JsonDateValueProcessor implements JsonValueProcessor { private String datePattern = "yyyy-MM-dd"; public JsonDateValueProcessor() { super(); } public JsonDateValueProcessor(String format) { super(); this.datePattern = format; } public Object processArrayValue(Object value, JsonConfig jsonConfig) { return process(value); } public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { return process(value); } private Object process(Object value) { try { if (value instanceof Date) { SimpleDateFormat sdf = new SimpleDateFormat(datePattern, Locale.UK); return sdf.format((Date) value); } return value == null ? "" : value.toString(); } catch (Exception e) { return ""; } } public String getDatePattern() { return datePattern; } public void setDatePattern(String pDatePattern) { datePattern = pDatePattern; } }
