您的位置:首页 > 编程语言 > Java开发

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

2015-02-02 15:49 861 查看

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":"女"}}]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: