JSONObject JSONArray 各种用法以及js eval()函数

一、在后台使用JSONObject对象,并将从数据库中取出来的数据直接使用 JSONObject的put方法放进去,再将这个JSONOject对象使用JSONArray的add()方法添加进去,这样就是一个保存了json对象的数组,在后台将JSONArray对象使用toString()方法传到前台这时前台的接受方式是json ,再将接受的这个数据使用eval()函数转化为json格式的js对象,在使用循环就可以取出其值。

 

1、前台:

 dataType:"json",   //返回值类型       

              success:function(jsons){      //获取数据

                   //

                  alert("成功");

   var datas= eval(jsons);               // 格式转化   ,将后台传递的string 转化为json对象

                                                                      //其实转化之后获取的是一个json数组,而每一行就是一个后台的对象而这里是                   

                                                                  //以json的对象格式存在的

                                                               //json数组格式:[{"name":"www","age":11,"class":"one"},

                                                                                                     {"name":"www2","age":112,"class":"on2e"},

                                                                                                     {"name":"www3","age":114,"class":"on4e"}                                                        

                                                                                                    ]

 

                   alert("长度"+datas.length);         

                  for(vari=0;i<datas.length;i++){                             //循环将其中每个对象的属性取出

                   $("#con").append(datas[i].param1+"  "+datas[i].param2  +"<br>");

                  }

                   } ,

 

2、后台:

try {

PrintWriterout = response.getWriter();

JSONArrayjar = new JSONArray();

// 通过循环每次创建对象并且添加数据并把每一个对象添加到集合中去,

for(inti=0;i<3;i++){

JSONObjectjsonObject = new JSONObject();

 jsonObject.put("param1","one"+i);

 jsonObject.put("param2","two"+i);

 

 jar.add(jsonObject);

}

out.print(jar.toString());

 

out.flush();

out.close();

 

 

 

 

 

3、前面的循环 在实际开发中使用方式:

 

String msql ="select * from storage";

Statementmstat = (Statement) conn.createStatement();

ResultSetmresultSet = mstat.executeQuery(msql);

JSONArrayarray = new JSONArray();

while(mresultSet.next()){

JSONObjecto = new JSONObject();

o.put("storageId",mresultSet.getString("storage_id"));

o.put("storageType",mresultSet.getString("store_type"));

array.add(o);

}

// 将其转化为字符串输出

returnarray.toString();

 

 

 

 

 

二、在后台的JSONObject 对象使用formObject()方法向其中添加一个对象,之后再将其转化为toString()类型

在前台接受方式为json 在前台使用eval()转化不然会出错,但是不能使用循环

 

1、前台:

 dataType:"json",   //返回值类型       

               success:function(jsons){

                      var  datas= eval(jsons);              //转化格式

                                          

                     $("#con").append("<br>"+datas.name +"  "+datas.age);

 

2、后台:

JSONObject    jsonObject=  new JSONObject();

jsonObject.fromObject(u1);

Out.println(jsonObject.fromObject(u1).toString());

String  sss=jsonObject.fromObject(u1).toString();

out.print(sss);

 

 

 

 

 

 

 

三、 后台传递一个集合,在前台进行接受输出。

在平时的开发中都会将获取的数据保存在一个集合中如list集合,这时使用 JSONArray 对象的 JSONArrayjsonarray=jar.fromObject(list);  fromObject 方法将其从java变成json 数组,这时如果不繁琐 则可以直接将json数组输出,但平时为了在传递的过程中方便我们将json数组转变为string 类型, String strs = jsonarray.toString();  之后在进行传递  , 在前台我们接受的是tostring () 类型的话我们就要使用eval() 函数进行解析,在遍历输出:

 

1、前台:

dataType:"json",  //返回值类型       

               success:function(jsons){

                       var  datas= eval(jsons);                      //转化格式

                        alert("长度"+datas.length);

                           for(vari=0;i<datas.length;i++){

                   $("#con").append(datas[i].name+"  "+datas[i].age  +"<br>");

                  }      } ,

 

2、后台:

 

                                  list.add(u1); // 添加u对象

 list.add(u2);

JSONArray    jar= new   JSONArray    ();

JSONArray    jsonarray=jar.fromObject(list);

Stringstrs = jsonarray.toString();

 

out.print(jsonarray);   //传递数组

                                 out.print(strs);   //传递string类型

out.flush();

out.close();

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值