老规矩,今天的思维导图:
1.JSON使用
对象字符串,满足定义规则的字符串。
1.1 前端JSON格式字符串的转换使用
JavaScript——JSON.stringify(o);JSON.parse(jsonStr);
jQuery——$.parseJSON();举例:
//jQuery方式
let list = $.parseJSON(data);
//JavaScript通过fastJSON工具来转换 JSON
String jsonString = JSON.toJSONString(diaoSi);
1.2 后端JSON格式字符串的转换使用
jackJSON
fastJSON
2.jQuery之AJAX使用
原生js写ajax请求(写起来很复杂,而且需要考虑浏览器版本),而jQuery将这些复杂的业务逻辑进行封装处理,使用非常简单。
3.1 概述
Ajax(Asynchronous JavaScript and XML) 异步JavaScript和XML
核心:Ajax就是能够做到局部刷新!
3.2 方法** ajax()
** get()
** post()3.3 语法
$.ajax({ url:"发送请求(提交或读取数据)的地址", dataType:"预期服务器返回数据的类型", type:"请求方式", async:"true/false", data:{发送到/读取后台(服务器)的数据}, success:function(data){请求成功时执行}, error:function(){请求失败时执行} });
<1> url 默认为当前页地址
<2> dataType 可用类型:
(如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递)
xml:返回XML文档,可用JQuery处理。
html:返回纯文本HTML信息。
script:返回纯文本JavaScript代码。
json:返回json数据。
jsonp:(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。
text:返回纯文本字符串。
说明:对于json和jsonp的区别,本小白暂时没有深入了解,目前只知道jsonp可以跨域读取数据,有待进一步学习~
<3> type 可用类型主要为post和get两种(默认为get)
get:从指定的资源请求数据(从服务器读取数据)
post:向指定的资源提交要被处理的数据(向服务器提交数据)
<4> async 异步方式,默认为true,即异步方式。当设置为false时,为同步方式。
异步方式:ajax执行后,会继续执行ajax后面的脚本,直到服务器端返回数据后,触发ajax里的success方法,这时候执行的是两个线程。
同步方式:在没有返回值之前,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。说明:这里的同步和异步有待深入理解,以下实例均使用默认的异步方式
<5> data 请求的数据,{ }中可以填入多项数据。如果不填(一般为get请求),则读取对应地址的全部数据,此时可以在console中通过console.log(res)显示数据情况。
<6> success 和 error 两个函数 一般需要设置,方便确定请求是否成功,以及请求成功后的提示或是对数据的处理和显示。
post方式
格式
$.post(url, [data], [callback], [type]);
参数1:url,请求路径
参数2:data,请求参数
参数3:callback,回调函数
参数4:type,返回内容格式,默认的是text,xml, html, script, json, text, _default。
json对象转字符串的使用两种fastjson与ObjectMapper
package com.zking.ajax.test;
import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.zking.ajax.entity.DiaoSi;
public class Demo {
public static void main(String[] args) {
//ajax中 servlet里面将结果保存到out对象中输出 参数只能是字符串或者数组
//问题:如何将一个对象或者数组转成一个字符串
//该字符串必须要满足JSON的格式
//JSON 对象字符串,简单的说就是一个字符串,符合对象的定义或者数组的定义集合定义对象数组的定义
/**
* JSON的格式
* {
* "name":"value",
* "name":"value"
* }
*
*/
//前端------parseJSON()
//后台——————借助JSON工具包(很多)
//今天 2个
//fastJSON jackJSON
//使用前 必须导包
// fastJSON
DiaoSi diaoSi = new DiaoSi(1, "谢文建", "男");
//需求:将diaosi转成字符串
//不满足json格式
System.out.println(diaoSi.toString());
//通过fastJSON工具来转换 JSON
String jsonString = JSON.toJSONString(diaoSi);
//{"did":1,"dname":"谢文建","sex":"男"}
System.out.println(jsonString);
String str2 = "{\"did\":1,\"dname\":\"谢文建\",\"sex\":\"男\"}";
DiaoSi parseObject = JSON.parseObject(str2,DiaoSi.class);
System.out.println(parseObject);
List<DiaoSi> list = new ArrayList<DiaoSi>();
for(int i = 1;i<=500;i++) {
if(i>=1 && i<=100) {
list.add(new DiaoSi(i+1, "康康屌丝"+i, "男"));
}else if(i>=101 && i<=200) {
list.add(new DiaoSi(i+1, "刘湘杨"+i, "男"));
}else if(i>=201 && i<=300) {
list.add(new DiaoSi(i+1, "雷惠玲"+i, "女"));
}else if(i>=301 && i<=400) {
list.add(new DiaoSi(i+1, "邓婉婷"+i, "女"));
}else if(i>=401 && i<=500) {
list.add(new DiaoSi(i+1, "章游"+i, "男"));
}
}
数组转换为字符串
String jsonString2 = JSON.toJSONString(list);
System.out.println(jsonString2);
// [{"did":2,"dname":"康康屌丝1","sex":"男"},{"did":3,"dname":"康康屌丝2","sex":"男"}]";
字符串 转为对象数组
List<DiaoSi> parseArray = JSON.parseArray(str3, DiaoSi.class);
System.out.println();
}
}
ObjectMapper 转换工具的使用
package com.zking.ajax.test;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zking.ajax.entity.DiaoSi;
public class Demo2 {
public static void main(String[] args) throws Exception {
//jackJSON
//必须实例化ObjectMapper对象才能使用
ObjectMapper mapper = new ObjectMapper();
DiaoSi diaoSi = new DiaoSi(1, "谢文建", "男");
对象转字符串
String writeValueAsString = mapper.writeValueAsString(diaoSi);
// {"did":1,"dname":"谢文建","sex":"男"}
System.out.println(writeValueAsString);
String ds = "{\"did\":1,\"dname\":\"谢文建\",\"sex\":\"男\"}";
字符串转对象
DiaoSi readValue = mapper.readValue(ds, DiaoSi.class);
System.out.println(readValue);
}