JSONArray.fromObject(list) list转json报错

做一个web应用  浏览记录用到ajax请求,将List<Product> list用JSONArray.fromObject(list) 转换成json格式时莫名其妙地报错

报错如下:

net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
    at net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:818)
    at net.sf.json.JSONObject._fromBean(JSONObject.java:699)
    at net.sf.json.JSONObject.fromObject(JSONObject.java:172)
    at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)
    at net.sf.json.JSONObject._processValue(JSONObject.java:2655)
    at net.sf.json.JSONObject.processValue(JSONObject.java:2721)
    at net.sf.json.JSONObject.setInternal(JSONObject.java:2736)
    at net.sf.json.JSONObject.setValue(JSONObject.java:1424)
    at net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:765)
    at net.sf.json.JSONObject._fromBean(JSONObject.java:699)
    at net.sf.json.JSONObject.fromObject(JSONObject.java:172)
    at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)
    at net.sf.json.JSONArray._processValue(JSONArray.java:2513)
    at net.sf.json.JSONArray.processValue(JSONArray.java:2538)
    at net.sf.json.JSONArray.addValue(JSONArray.java:2525)
    at net.sf.json.JSONArray._fromCollection(JSONArray.java:1056)
    at net.sf.json.JSONArray.fromObject(JSONArray.java:123)
    at net.sf.json.JSONArray.fromObject(JSONArray.java:105)
    at com.itheima.utils.JsonUtil.list2json(JsonUtil.java:45)
    at com.itheima.utils.JsonUtil.main(JsonUtil.java:113)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2170)
    at org.apache.commons.beanutils.PropertyUtilsBean.getSimpleProperty(PropertyUtilsBean.java:1332)
    at org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:770)
    at org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:846)
    at org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:426)
    at net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:749)
    ... 19 more
Caused by: java.lang.IllegalArgumentException
    at java.sql.Date.getHours(Date.java:187)
    ... 29 more

Product   javabean如下

public class Product implements Serializable{//所有javabean都建议序列化  否则写不到硬盘上
	
	private String pid;
	private String pname;
	private Double market_price;
	
	private Double shop_price;
	private String pimage;
	private Date pdate;
	
	private Integer is_hot=0;//是否热门    1:热门    0:否
	private String pdesc;
	private Integer pflag=1;//是否下架   1:下架  0:未下架

	//属于哪个分类
	private Category category;

    //get set方法省略	.....
}

Category自定义对象   

Date 日期对象

其他都是基本类型包装类

从数据库查询完毕后转json就是报错,改了一晚上,刚刚发现错误,一直抓着JSONObject不放,调了好久也没有调好,最后的at java.sql.Date.getHours(Date.java:187)异常一直没有引起我的注意,以为系统自定义的类,我没法改,可问题关键就在这,list对象内有个成员是Date  API就不会转换了,之前的beanutils封装请求数据也是一样,还要自己注册一个date转换方法,所以说date类型还是直接用string比较省事,数据库兼容,java代码又何必自找麻烦。

将date值都设置为null就好了  我的浏览记录功能恰好有用不到这个属性值。。

猜你喜欢

转载自blog.csdn.net/hza419763578/article/details/82355203