1、Ajax
1、Ajax是一种异步刷新技术,用来在当前页面内响应不同的请求内容
2、是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术
3、通过在后台与服务器进行少量数据交换,实现异步更新
同步和异步:
客户端和服务器相互通信的基础上
同步:客户端必须等待服务器端的响应,在等待期间客户端不能做其他操作
异步:客户端不需要等待客户端的响应,在服务器处理请求的过程中,客户端可以进行其他操作
2、Ajax的使用
$.ajax:
<script>function send_ajax() {$.ajax({url:"", //请求资源地址type: "GET", //请求方法data:{"键1":"值1","键2":值2}, //请求的参数。json格式(键值对)success:function (date) { //响应成功,data为响应的数据内容alert(date); //对响应的数据进行操作},error:function () { //请求失败alert("出错了!"); //对请求失败进行处理},dataType:"text" //预处理响应的数据类型});}</script>
$.get&$.post:
$.get(url, [data], [callback], [type])url:请求路径data:请求参数(json类型的键值对)callback:回调函数(响应处理)type:响应结果的类型$.post(url, [data], [callback], [type])
3、JSON
1、json多用于储存和交换文本信息
2、进行数据的运输
3、JSON比XML更小,更快,更易解析
解析对象:
<script>// 定义json对象personlet person = {"username":"张三","性别":"男","age":13};// 解析数据: 使用forin遍历person对象for (let key in person){let value = person[key];alert(key+":"+value);}</script>
解析数组:
<script>// 定义json对象personlet persons = [{"username": "张三", "性别": "男", "age": 13,},{"username": "李四", "性别": "女", "age": 14,},{"username": "王五", "性别": "男", "age": 15,}];// 解析数据: 使用forof遍历persons对象for (let person of persons) {// 遍历获取到每一个person对象,使用forin遍历获取属性和值for (let key in person) {let value = person[key];console.log((key + ":" + value));}}</script>
解析K对应的数组:
<script>// 定义json对象personlet obj = {"girls":["小泽","小苍","小莉","小波"]};console.log("----------方式一---------");// 获取对象中的keyfor (let key in obj) {// key,获取的值对应的是数组let value = obj[key];for (let name of value){console.log(name);}}console.log("----------方式二---------");// 通过对象名.键名获取对应的valuelet girls = obj.girls;for (let girl of girls){console.log(girl);}</script>
使用$.each遍历JSON对象:
<script>var obj = {"persons": [{"name": "张三", "age": 23, "gender": true},{"name": "李四", "age": 24, "gender": true},{"name": "王五", "age": 25, "gender": false}]};$.each(obj,function (index,element) {// 遍历获取到每一个对象{"name": "张三", "age": 23, "gender": true}for (let person of element){for (let key in person) {let value = person[key];console.log((key + ":" + value));}}});</script>
4、JSON对象与JAVA对象的转换
json常见解析器:Jsonlib,Gson,fastjson,jackson
1、导包,jackson相关jar包
2、创建核心对象 ObjectMapper
3、调用ObjectMapper的相关方法进行转换
java对象转换json:
writeValue(File destPath, Object obj)将obj对象转换为JSON字符串,并保存到指定的文件中writeValue(OutputStream os, Object obj)将obj对象转换为JSON字符串,并将json数据填充到字节输出流中writeValue(Writer writer, Object obj)将obj对象转换为JSON字符串,并将json数据填充到字符输出流中writeValueAsString(Object obj)将对象转为json字符串jackson相关注解:@Jsonlgnore 排除属性,意思是不json化指定属性@JsonFormat 属性值格式化,用于date属性:@JsonFormat(pattern = "yyyy-MM-dd")
ObjectMapperUtil工具类:
public class ObjectMapperUtil {// 将User对象序列化为Json对象public static String objectToJson(User user) throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();String json = objectMapper.writeValueAsString(user);return json;}// 将List对象序列化为Json对象public static String listToJson(List<User> list) throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();String json = objectMapper.writeValueAsString(list);return json;}// 将Map对象序列化为Json对象public static String mapToJson(Map<String, ArrayList<User>> map) throws JsonProcessingException {ObjectMapper objectMapper = new ObjectMapper();String json = objectMapper.writeValueAsString(map);return json;}}
json转换java对象:
readValue(String json,Class clazz)将指定的json字符串转换成指定的对象
