执行:
public static String toJson(String tableId,Object mainObject,String tableName,Object subObjet){
JSONArray mainjson = JSONArray.fromObject(mainObject);
JSONArray subjson = JSONArray.fromObject(subObjet);
StringBuffer sb=new StringBuffer();
sb.append("{'main':{'tableId':'");
sb.append(tableId);
sb.append("','fields':");
sb.append(mainjson.toString().replaceAll("\\[", "").replaceAll("\\]", ""));
sb.append(",'sub':[{'tableName':'");
sb.append(tableName);
sb.append("','fields':");
sb.append(subjson.toString());
sb.append("}],'opinion':[]}");
// System.out.println(sb.toString().replaceAll("\"", "'"));
return sb.toString().replaceAll("\"", "'");
}
就会报以下错误:
net.sf.json.JSONException: java.lang.reflect.InvocationTargetException
主要是因为java代码将数据转换json格式发生错误,mainObject里有Date字段,且从数据库里读出来的是java.sql.Date赋值给了java.util.Date,转化成JSONArray时出错,将mainObject的对象类Date字段直接改成引用java.util.Date类型,因为hibernate在查询数据库数据的时候会自动帮我们将java.sql.Date转换成java.util.Date!问题就可以解决了!