[1] JSON简介
> JSON全称 JavaScript Object Notation
> 类似于JS中对象的创建的方法
> JSON和XML一样,都是一种表示数据的格式
> 但是JSON比XML的存储和解析性能要高的多,JSON要比XML高个30%左右。
<user>
<name>sunwukong</name>
<age>18</age>
<gender>男</gender>
</user>
{"name":"孙悟空","age":8,"gender":男}
[2] JSON的格式
> JSON字符串不方便阅读,但是传输性能好
> XML方便阅读,但是传输性能差
> JSON的格式和JS对象类型,但是要求属性名必须使用双引号。不能使用单引号,也不能不写引号!
> JSON对象中实际就是一组一组的键值对的结构,
键和值使用:连接,多个键值对之间使用,分开,注意如果是最后一组键值对,则千万不要在加,.
例如: {"属性名1":属性值1,"属性名2":属性值2,"属性名3":属性值3,"属性名4":属性值4}
> JSON运行属性值的类型:
1.字符串
2.数字
3.布尔
4.对象
5.数组
6.null
> 数组:
[属性1,属性2,属性3,属性4]
[3] JS中使用JSON
JSON对象 --> JSON字符串
JSON.stringify(对象)
JSON字符串 --> JSON对象
JSON.parse(JSON字符串)
[4] Java中使用JSON
> 目前Java中用的比较多的JSON解析工具:
json-lib --> 使用麻烦,解析性能最差
Jackson --> 使用较麻烦,解析性能最好
Gson --> 使用简单,解析性能中能
- Gson是谷歌出的一款JSON解析工具,使用简单,且性能较好。
Java对象 --> JSON字符串
//把map转化为json字符串 Map<String,String> map=new HashMap(); map.put("name", "张三"); map.put("hobby", "篮球"); map.put("genter", "男"); String str=gson.toJson(map);
JSON字符串 --> Java对象
Map<String,String> map2=gson.fromJson(str, Map.class); System.out.println(map2);
[3].通过jQuery实现AJAX
> 使用get和getJSON都会有缓存问题,并且使用get方法不能传送较多的数据。
> post方法不会有缓存的问题,所以我们开发时使用post方法较多。
[1] post()方法
$.post(url, [data], [callback], [type])
参数:
url:发送AJAX的请求地址,字符串。
data:发送给服务器的请求参数,JSON格式。
callback:当前需要获取服务器发送的响应时,我们可以通过该回调函数。
jQuery会将响应信息以回调函数的参数的形式返回
type:响应信息的类型,字符串。一般两个常用值text、json
[2] get()方法
- get方法和post方法使用方式基本一致。
[3] getJSON()方法
getJSON(url, [data], [callback])
getJSON方法和get方法类似,只不过该方法默认的响应类型为JSON,不需要再手动指定。
[4]下面给出一个小例子:(本例子页面特别简单,只为了只实现这一个功能)
先导入jQuery所需要的jar包:
我将这个jar包导入了WebContent下的js文件夹在(js文件夹是自己建的)。
之后再jsp中引入jQuery
<script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.2.1.js"> </script>
然后就是jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.2.1.js"> </script> <script type="text/javascript"> $(function(){ $("#btn").click(function(){ var url="${pageContext.request.contextPath}/Servlet1"; var json={"name":"zhangsan"}; function callback(data){ } $.get(url,json,callback); }); }); </script> </head> <body> <button id="btn">确定</button> </body> </html>
这样后台就行接收到这个基于jQuery和json的get请求。