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. //1、创建Gson对象
  2. Gson gson = new Gson();
  3. //2、使用gson.toJson(JavaBean)方法将JavaBean转换为JSON字符串
  4. String JavaBeanJsonStr = gson.toJson(JavaBean);

JSON字符串转换为JavaBean对象
  1. //1、创建Gson对象
  2. Gson gson = new Gson();
  3. //2、使用gson.fromJson(JSON字符串,JavaBean对象的class类型)方法将JSON字符串转换为JavaBean
  4. JavaBean jb = gson.fromJson(JavaBeanJsonString, JavaBean.class);

2、List集合与JSON字符串的相互转换

List集合转换为JSON字符串
  1. Gson gson = new Gson();
  2. String ListJsonStr = gson.toJson(List);

JSON字符串转换为List集合
  1. Gson gson = new Gson();
  2. List<T> list = gson.fromJson(ListJsonStr, new TypeToken<List<T>>(){}.getType());
  3. //注意:JSON字符串转换为List集合的第二个参数要用new TypeToken<List<T>>(){}.getType(),来获取List集合的类型!

3、Map集合与JSON字符串的相互转换

Map集合转换为JSON字符串
  1. Gson gson = new Gson();
  2. String MapJsonStr = gson.toJson(Map);

JSON字符串转换为Map集合
  1. Gson gson = new Gson();
  2. Map<T,T> map = gson.fromJson(MapJsonStr, new TypeToken<HashMap<T,T>>(){}.getType());

AJAX请求

注意:AJAX请求是基于JQuery的!!

因为 AJAX 代码是写在 JQuery 代码里面的,比如 JQuery 的那个入口函数里面就可以写 AJAX 请求。

所以在使用AJAX之前,一定一定要导入JQuery资源!

QQ图片20200722112251.png

一、什么是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请求,然后在页面上打印出数据

  1. $("#id").click(function(){
  2. $.post("Servlet", {"name":"小吴","password":123456}, function(data){
  3. $("#divid").html(data.name +","+ data.password);
  4. },"json");
  5. });

三、表单序列化

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 的数据输出到浏览器中。