JSON格式传递数据使用方法(JS和JAVA)

来源:互联网 发布:淘宝服装店学生 编辑:程序博客网 时间:2024/05/16 14:21

1.使用AJAX 方式

           此种方法因为后台返回json 数据格式,但是【dataType:"json"】已经指定了json,
           不需要在前台再次解析了,直接当作json格式使用,如果使用【2】中的方式解析js会报错的

1.1  js写法

$.ajax({
   url: url,
   data:data,
   cache: false,
   dataType: "json",
   type: "POST",
   success: function (d) {
      alert(d.b);//提示tips
      if(d.a=="7"){
         alert(“解析成功”);
      }
},   error: function (e) {      alert("操作失败失败,请稍后再试");   }});

1.2 后台处理返回json数据

@RequestMapping("/findByPhone")@ResponseBody//此注解很重要,使用ajax需要引入public JSONObject findByPhone(HttpServletRequest request, ForgetForm forgetForm) throws Exception {    //校验页面的验证码是否正确    JSONObject json = new JSONObject();
    json.accumulate("a","7");    json.accumulate("b", tips);   return json;
}

2.非AJAX方式

2.1、传值页面

1、var retVal = JSON.parse("{}");//定义一个json

2、在retVal内注入两个值

retVal .aa= 'aaStr';

retVal .bb= 'bbStr';

3、使用JSON.stringify();  stringify()用于从一个对象解析出json字符串

window.returnValue=JSON.stringify(retVal );

eg:

stringify()用于从一个对象解析出字符串,如

var a = {a:1,b:2}

结果:

JSON.stringify(a)

"{"a":1,"b":2}"

、、、、、、、、、、、、、、、、、、、、、

传值json数组

var oResult=new Object();//定义一个对象

for(var i=0;i<iRow;i++){
var rd = JSON.parse("{}");//定义一个json
rd.AAT026=orgRelQuery.getCellValueById(i,"AAT026");//为json注入值
rd.AAT028=orgRelQuery.getCellValueById(i,"AAT028");
rd.AAT001=orgRelQuery.getCellValueById(i,"AAT001");
oResult[i] =rd;//为oResult 对象 注入json格式字符串
}//循环注入形成数组

result=JSON.stringify(oResult);//解析出json数组


2.2、接收页面

1、var result = JSON.parse(retVal );         //retVal为接收传值页面的返回值 

2、var aa = result.aa;

      var bb = result.bb;

parse用于从一个字符串中解析出json对象,如

var str = '{"name":"huangxiaojian","age":"23"}'

结果:

JSON.parse(str)

或者例如:

var resultArr = JSON.parse(result); 

//resultArrlength--resulrArr长度

for(i=0;i<resultArrlength;i++){
//校验有没有选择公司
resultArr[i].abt002;

}


2.3、在JAVA中操作json 数据

依赖jar:【
还需要导入这些包commons-beanutils-1.7.0.jar   commons-lang-2.1.jar  ezmorph-1.0.2.jar   

commons-collections.jar commons-logging-1.0.4.jar json-lib-2.4-jdk15.jar

a.新建json 数据

<span style="background-color: rgb(255, 255, 255);">Gd016 gd016 = (Gd016)get(Gd016.class, gdk016);//反射得到实例对象JSONObject json =JSONObject.fromObject(gd016);//将实例对象转化为json对象(将对象gd016的所有属性和值以key和value的形式写入json对象中)json.accumulate("xmlflag", xmlflag);//json对象内添加元素(在json对象中动态添加key和value键值对)</span>


businessXML.setOutObject("json", json.toString());//调用 json.toString()方法,使刚刚生成的json数据以String形式传递

b.解析json数据

(1)response.setContentType(   "application/json" );   //服务器响应的类型

String jsonString =   request.getParameter(   "testJsonString"   );  //获取传过来的json字符串

JSONObject jsonobj = JSONObject.   fromObject (jsonString); //把 json格式的字符串转化为json对像

System. out .println( "name:"   +jsonobj.getString( "name" )+   ",age:" +jsonobj.getInt( "age"   ));

           输入结果: name:james,age:29---------------------------------【json字符串和新建方法类似】

(2)把json数组形式的字符串转化为json数组,再解析出来

           // [{"name":"olay","age":21},{"name":"james","age":22},{"name":"kobe","age":34}]

          response.setContentType( "application/json" );   //服务器响应的类型

         String jsondata = request.getParameter(   "testJsonArray" );  //获取传过来的json字符串

         System.   out .println(jsondata);    // [{"name":"olay","age":21},{"name":"james","age":22},{"name":"kobe","age":34}]---必须是格式“[ {  } ]”

         JSONArray jsonArray = JSONArray.   fromObject (jsondata); //转化为json数组-------JSONArray对象得到数组

                 for ( int   i=0;i<jsonArray.size();i++){   //遍历json数组

                      JSONObject obj = JSONObject.   fromObject (jsonArray.get(i)); //转化为json对象---------json字符串解析

                      System. out .println( "name:"   +obj.getString( "name" )+   ",age:" +obj.getInt( "age"   ));

               }

(3)java中lst集合转为为json数组


          User user1 =   new   User();
         user1.setName(   "james" );
         user1.setAge(29);
         User user2 =   new   User();
         user2.setName(   "olay" );
         user2.setAge(22);  


          List   list =   new   ArrayList ();
          list.add(user1) ;
          list.add(user2) ;


          JSONArray arr = JSONArray. fromObject (list);  // lst集合转为为json数组
         System.   out .println(arr);    // [{"age":29,"name":"james"},{"age":22,"name":"olay"}]


(4)java中Map集合转化为json二位数组


        Student student =   new   Student();
       student.setName(   "张三" );
       student.setAge(15);
       student.setSex(   "男" );
       
       Teacher teacher =   new   Teacher();


       teacher.setName(   "梨花" );


       teacher.setAge(29);


       teacher.setSex(   "女" );


        Map   map =   new   HashMap ();


        map.put( "student" , student) ;


         map.put( "teacher" , teacher) ;


        JSONArray arrMap = JSONArray. fromObject (map);  // Map集合转化为json二位数组


       System.   out .println(arrMap);  // [{"student":{"age":15,"name":"张三","sex":"男"},"teacher":{"age":29,"name":"梨花","sex":"女"}}]




0 0
原创粉丝点击