在找遍后才发现都是用JSONArray解决的……是我搜索方法出了错么?
这种方式我记得会加重运算负担吧…………
————————————————————————————————————————
先将方法附上:
首先要理解这几个概念
ResultSet:java中从数据库中读取到的数据集合,需要用next()方式来读取出来,即便只有一行记录。
List/ArrayList:普普通通的集合
JSONArray:JSON的数组,使用需要导入6个jar包。
JSONObject:单个JSON对象,可以很方便的在后端将单个对象转换为JSON。使用需要导入6个包。
JSON:一种键值类型,通常在前端有较多的应用,上面两个对象都是由它延申出来的。
具体的格式为:
|
——————————————————————————————————————————
现在我们要使用JSONArray和JSONObject,就要准备那6个传说中的包:
1.commons-lang.jar
2.commons-beanutils.jar
3.commons-collections.jar
4.commons-logging.jar
5.ezmorph.jar
6.json-lib-2.2.2-jdk15.jar
这里的第六个是要依赖其他几个包才能运行。
搜索到可以用使用Maven来进行包的依赖查询和管理,养成良好习惯,虽然我没用过……但是以后会尝试使用。
————————————————————————————————————————
List/ArrayList最关键的转换方式:
[
JSONArray 自定义名称= JSONArray.fromObject(list你的集合);
]
至于JSONObject也是一样,只不过不能转换List而是转单个变量为单个JSON的。
还要注意,这里转换时不可以先转换为toString(),结果会将字符挨个成JSON。
什么时候用到?
如果要在servlet中输出一下,作个监视的话,可以转换为toString()再输出:
//这个输出可以在tomcat的输出框中显示取得的值
System.out.println("最终得到结果:"+自定义JSONArray.toString());
————————————————————————————————————————————
后台转换好后,我们需要再传递给前台的ajax,传递方法很简单:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
//不想乱码就把上面两句乖乖加上
....过程省略
ArrayList list = RC.某个方法();
JSONArray jsonDocumentList = JSONArray.fromObject(list);
//下面就是传递给前台的方法
PrintWriter out = null;
out = response.getWriter();
out.println(jsonDocumentList);
out.flush();
out.close();
——————————————————————————————————————————————
前台ajax获取传递过来的JSON:
这里以我写过的为例子……不想再写了……效果是给某几个select下拉选择框增加几个opiton选择。
具体可以去翻我的博客。
function onLoadRead()
{
// alert("test");
var ajaxTimeOut=
$.ajax({
type:"post",
url:"/AddSR_ReadCourseName",
dataType:"json",
async:true,异步
cache:false,//不缓存
timeout:5000,
success:function(data)
{
if(data)
{
//正确的使用形式测试
// alert("测试:"+data[0].courseName);
// alert("测试2:"+data.length);
$("#course1").append("<option selected value=''>请选择</option>");
$("#course2").append("<option selected value=''>请选择</option>");
for(var i=0;i<data.length;i++)
{
$("#course1").append("<option selected value='"+data[i].courseName+"'>"+data[i].courseName+"</option>");
$("#course2").append("<option selected value='"+data[i].courseName+"'>"+data[i].courseName+"</option>");
}
alert("data.success 成功");
}
else {
alert("data.success 失败")
}
},
error:function ()
{
alert("数据传输失败!")
},
complete:function (XMLHttpRequest,status)
{
if(status=='timeout')
{
//如果请求超时,则弹出提示,并取消请求
alert("请求超时");
ajaxTimeOut.abort();
}
}
});
}
————————————————————————————————————————————
还要注意的一点:
如果tomcat报错:java.sql.SQLException: Before start of result set…………
ArrayList 一定绝对不能赋值为NULL!!!!!!!!
ResultSet rs;
ArrayList arrayList = new ArrayList();
如果赋值NULL的话,后面会无法将数据写到ArrayList 中!!!!!!!!!