后台传JSON一般有两种格式:
① out直接拼接传回;
一般返回JSON字符串。
out.print("{\"username\":\"yanshi02\",\"password\":\"123456\"}");
下面的形式返回将不不能解析!
"{'username':'admin','password':'123456'}"
- 1
- 2
- 3
- 4
② 返回一个JSON-String对象;
JSON数组多应用此种方法。
- 使用jackson 进行转换返回JSON(也可以使用fastJSON等其他json框架)
List<User> users= session.selectList(statement);
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(users);
- 1
- 2
- 3
- 4
- 5
- json数组如下
json..[{"id":1,"name":"tom1","age":11},
{"id":2,"name":"tom2","age":12},
{"id":3,"name":"tom4","age":13},
{"id":7,"name":"tom5","age":15},
{"id":8,"name":"Tom6","age":16},
{"id":9,"name":"Tom6","age":16}]
- 1
- 2
- 3
- 4
- 5
- 6
或者
- 手动拼接成JSON字符串返回
String name = request.getParameter("username");
String password = request.getParameter("password");
String jsonString ="{\"username\":"+'"'+name+'"'+",\"password\":"+'"'+password+'"'+"}";
out.println(jsonString);
out.flush();
out.close();
或者数组:
"[{\"name\":\"username\",\"value\":\"admin\"}, {\"name\":\"password\",\"value\":\"123456\"}]"
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
判断类型
alert(typeof data);
//如果为object,可以尝试直接使用data.key获取属性;
//如果为string,那么必须进行解析为json object,才可以使用!
- 1
- 2
- 3
第一种情况:
- 获取拿到的JSON字符串,将其转换为JSON 对象。
- 使用data.key(此时 typeof json 一定为object 而不是string)的形式获取属性值
var jsonReturn = JSON.parse(data);
alert(jsonReturn.username+" , "+jsonReturn.password);
- 1
- 2
- 3
-
- 提交的数据内容(字符串的形式,非JSON)
-
- 返回的JSON字符串
-
- 转换后的JSON对象
-
- 获取的属性值
着重讲一下第二种情况–返回String对象。
JS拿到String对象,需要进行解析,将其转变为JSON对象(如果为object,不需要解析,可以直接使用string)。
【此时json为数组哦,不是单个json对象】
- 有三种方法:
① var jsonReturn = eval("("+data+")");
② var jsonReturn = $.parseJSON(data);
③ var jsonReturn = JSON.parse(data);
- 1
- 2
- 3
- 4
- 5
然后就可以对 jsonReturn 进行遍历。
遍历的两种方法:
-
- 第一种:
for(var i=0;i<jsonReturn.length;i++){
for(var key in jsonReturn[i]){
alert(key+':'+jsonReturn[i][key]);
$("#content").append(jsonReturn[i][key]);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
-
- 第二种
$.each(jsonReturn,function(index,value){
//alert(typeof value +" , "+value);
alert(typeof value +" ,外层 index: "+index+","+value+",内容为:name :"+value.name+",value:"+value.value);
});
- 1
- 2
- 3
- 4