java list转JSONObject报错

最近的项目需要将list转json返回到页面显示,遇到问题:
net.sf.json.JSONException: java.lang.reflect.InvocationTargetException at net.sf.json.JSONObject._fromBean(JSONObject.java:738) at net.sf.json.JSONObject.fromObject(JSONObject.java:182) at net.sf.json.JSONObject._processValue(JSONObject.java:2426) at net.sf.json.JSONObject._setInternal(JSONObject.java:2447) at net.sf.json.JSONObject.setValue(JSONObject.java:1189) at net.sf.json.JSONObject._fromBean(JSONObject.java:725) at net.sf.json.JSONObject.fromObject(JSONObject.java:182) at net.sf.json.JSONArray._processValue(JSONArray.java:2294) at net.sf.json.JSONArray.processValue(JSONArray.java:2325) at net.sf.json.JSONArray.addValue(JSONArray.java:2312) at net.sf.json.JSONArray._fromCollection(JSONArray.java:841) at net.sf.json.JSONArray.fromObject(JSONArray.java:137) at net.sf.json.JSONArray.fromObject(JSONArray.java:120)
谷歌了一下,据说是因为list中的数据有java.sql.date类型,而json的转换需要java.util.date。所以转换会报错。如果 list中数据有java.sql.time也会有同样的错。废话不多说,说下怎么解决。JSON jar包提供了扩展JSON转换处理类的方法。扩展类需要实现JsonValueProcessor,代码如下

import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
public class JsonDateValueProcessor implements JsonValueProcessor { 

private String format ="yyyy-MM-dd hh:mm:ss"; 
private String format2 ="hh:mm:ss"; 
public Object processArrayValue(Object value, JsonConfig config) { 
return process(value); 
} 

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); 
} 

if(value instanceof Time){ 
SimpleDateFormat sdf = new SimpleDateFormat(format2,Locale.UK); 
return sdf.format(value); 
} 
return value == null ? "" : value.toString(); 

} 
}


转换JSON的时候如下:

JSONObject jsonArray = new JSONObject();
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonDateValueProcessor()); 
jsonConfig.registerJsonValueProcessor(java.sql.Time.class, new JsonDateValueProcessor()); 
JSONArray jsonObj = JSONArray.fromObject(userlist, jsonConfig);


 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值