1.使用AJAX 方式
1.1 js写法
$.ajax({url: url,
data:data,
cache: false,dataType: "json",type: "POST",success: function (d) {alert(d.b);//提示tipsif(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 数据
还需要导入这些包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
<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":"女"}}]