【ajax】数据转化为json例如resultset转化为json,提交给前端的方法

在找遍后才发现都是用JSONArray解决的……是我搜索方法出了错么?

这种方式我记得会加重运算负担吧…………

————————————————————————————————————————

先将方法附上:

首先要理解这几个概念

ResultSet:java中从数据库中读取到的数据集合,需要用next()方式来读取出来,即便只有一行记录。

List/ArrayList:普普通通的集合

JSONArray:JSON的数组,使用需要导入6个jar包。

JSONObject:单个JSON对象,可以很方便的在后端将单个对象转换为JSON。使用需要导入6个包。

JSON:一种键值类型,通常在前端有较多的应用,上面两个对象都是由它延申出来的。

具体的格式为:

  • 数据在名称/值对中
  • 数据由逗号分隔
  • 花括号保存对象
  • 方括号保存数组
  • 例如:
  • var employees = [//这里是个数组集合,有3个JSON记录
  • { "firstName":"Bill" , "lastName":"Gates" },
  • { "firstName":"George" , "lastName":"Bush" },
  • { "firstName":"Thomas" , "lastName": "Carter" }
  • ];
  • 使用时employees[0].lastName;即“Gates”。

——————————————————————————————————————————

现在我们要使用JSONArrayJSONObject,就要准备那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 中!!!!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值