JSON数据格式
一、什么是JSON
JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。
JSON有两种存在形式:JSON对象、JSON字符串
JSON的定义:由花括号括起来,以多个键值对用逗号分开所构成,键的名称要加引号
二、JSON在JavaScript中的使用(前端)
1、访问JSON对象
当JSON以对象的形式存在,就可以用 JSON对象.键名 的形式获取到对应键的值 ,若有键的值是以数组的形式存在,则可以使用 JSON对象.键名[索引] 的方式获取
2、JSON对象与JSON字符串的相互转换
JSON.parse 把JSON字符串转换为JSON对象
JSON.stringify 把JSON对象转换为JSON字符串
三、JSON在JAVA中的使用(后台)
转成JSON字符串:gson.toJson( 待转换的类型)
转成其它类型:gson.fromJson(JSON字符串,要转换的类型)
1、JavaBean与JSON字符串的相互转换
JavaBean对象转换为JSON字符串(一般都是用这个然后传递给前端)
//1、创建Gson对象
Gson gson = new Gson();
//2、使用gson.toJson(JavaBean)方法将JavaBean转换为JSON字符串
String JavaBeanJsonStr = gson.toJson(JavaBean);
JSON字符串转换为JavaBean对象
//1、创建Gson对象
Gson gson = new Gson();
//2、使用gson.fromJson(JSON字符串,JavaBean对象的class类型)方法将JSON字符串转换为JavaBean
JavaBean jb = gson.fromJson(JavaBeanJsonString, JavaBean.class);
2、List集合与JSON字符串的相互转换
List集合转换为JSON字符串
Gson gson = new Gson();
String ListJsonStr = gson.toJson(List);
JSON字符串转换为List集合
Gson gson = new Gson();
List<T> list = gson.fromJson(ListJsonStr, new TypeToken<List<T>>(){}.getType());
//注意:JSON字符串转换为List集合的第二个参数要用new TypeToken<List<T>>(){}.getType(),来获取List集合的类型!
3、Map集合与JSON字符串的相互转换
Map集合转换为JSON字符串
Gson gson = new Gson();
String MapJsonStr = gson.toJson(Map);
JSON字符串转换为Map集合
Gson gson = new Gson();
Map<T,T> map = gson.fromJson(MapJsonStr, new TypeToken<HashMap<T,T>>(){}.getType());
AJAX请求
注意:AJAX请求是基于JQuery的!!
因为 AJAX 代码是写在 JQuery 代码里面的,比如 JQuery 的那个入口函数里面就可以写 AJAX 请求。
所以在使用AJAX之前,一定一定要导入JQuery资源!
一、什么是AJAX请求
AJAX 是一种浏览器通过 js 异步发起请求,局部更新页面的技术
AJAX 请求的局部更新,浏览器地址栏不会发生变化、不会舍弃原来页面的内容
使用AJAX请求就不需要什么类似于表单的action属性,超链接的href属性之类的进行参数的提交,直接创建出一个按钮,然后绑定单击事件,接着使用AJAX请求即可!
二、JQuery中的AJAX请求
$.post(URL, [data], [callback], [type])
作用:发生一个post类型的AJAX请求
URL:要发送至后台的某个URL地址
data:从前端获取的待发送至后台的的key/value参数:key=value&key=value&……
callback:响应就绪时使用的回调函数,注意此回调函数一定要带参数data,并且参数就表示从后台响应回来的数据!一般响应回来的都是json对象!
type:从后台响应回来的数据格式:“json”表示json对象、“text”表示纯文本e
使用举例:
给一个按钮绑定单击事件,并且发送AJAX请求,然后在页面上打印出数据
$("#id").click(function(){
$.post("Servlet", {"name":"小吴","password":123456}, function(data){
$("#divid").html(data.name +","+ data.password);
},"json");
});
三、表单序列化
JQuery中的serialize( )方法,可以把表单中所有表单项的内容都获取到,并以 name=value&name=value 的字符串形式进行拼接然后返回
$("#formid").serialize()
四、在Servlet中响应回一个JSON对象
response.getWriter().write(jsonStr);
//这一行代码就是将Servlet中的JSON字符串以JSON对象的形式响应回前台的AJAX请求的回调函数中!也就是回调函数的参数data!然后再在回调函数体内进行编辑再输出到浏览器页面上!
而
response.write();
//这个则是直接将响应的内容展示到浏览器页面上!
所以!
response.getWriter().write()
//与
response.write()
//二者不一样!
// getWriter 是获取到一个输出流,才可以将 Json 的数据输出到浏览器中。