這周項目出現一個問題,部分單據在查詢詳情的時候。報錯
net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
一看這個報錯初步判斷是JSON轉換的時候出問題了。
然後根據堆棧信息找到了對於的方法。裏面有一段代碼
JSONSerializer.toJSON(item).toString();
這裏的item是一個級聯查詢的結果。
item包括單據中部分信息和幾個list集合屬性。
查找資料,發現如果實體類中的map的value值有null,或者存在java.sql.date類型的時間值,解析的時候會出現這個問題。
而上面的item這兩個問題可能都有。調試代碼發現是其中一個list屬性中包含了java.sql.date。
解決思路是將這個java.sql.date轉換成java.util.Date。
思路確定就好辦了。
項目使用的mybatis,查找到對應的mapper。然後將返回類型returnType="Map",修改爲returnMap="實體類"。
問題解決。
知識使我快樂