目录
1、什么是JSON
JSON是一种轻量级的数据交换格式,它基于ECMAScript的一个子集,采用完全独立于语言的文本格式来存储和表示数据。
JSON是Web中非常流行的数据交换格式。进行异步请求时,服务器返回的响应体通常是JSON格式的字符串,要将其解析为JavaScript对象,或将数据转换为JSON格式发送给服务器。在JavaScript中,可以使用JSON.stringify()方法将JavaScript对象转换为JSON字符串,使用JSON.parse()方法将JSON字符串解析回JavaScript对象。但JSON本身并不局限于异步编程,它也可以用于同步操作。
2、数据交换格式
XML和JSON都是数据交换格式。
XML(eXtensible Markup Language)即可扩展标记语言,是一种用于编码文档的标记语言,它允许用户自定义标签来描述数据。XML被设计用来传输和存储数据,焦点是数据的内容。它是一种自描述性语言,可以表示复杂的数据结构,如树形结构,并且是独立于软件和硬件的信息传输工具。
<student>
<name>Sheldon</name>
<age>23</age>
<city>北京</city>
</student>
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。JSON 比 XML 更小、更快,更易解析。它是一个独立于语言的文本格式,但是使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
{
"name":"Sheldon",
"age":23,
"city":"北京"
}
3、AJAX、Axios、JSON的关系
他们有着密切的关系,特别是在处理网络请求和数据交换时。异步编程在JavaScript中通过AJAX、Axios等实现网络请求的发送和接收,并使用JSON处理数据的序列化和反序列化。可以在不阻塞主线程的情况下处理网络请求,提高Web应用响应性和性能。
AJAX、Axios、JSON并不仅仅局限于异步编程。
-
AJAX:主要关注在无需重新加载整个页面的情况下,实现与服务器的通信。它允许开发者创建更为动态和响应式的Web应用。这种与服务器的通信经常是异步的,因此AJAX常用于异步编程中。然而,AJAX本身不局限于异步操作,它更多的是一种构建Web应用的架构和策略。
-
Axios:是一个基于Promise的HTTP客户端,用于浏览器和node.js。它提供了一种简洁的方式发起HTTP请求,并处理响应。Axios的主要优势在于它简化了HTTP请求的发送和响应的处理,特别是通过Promise使得异步操作更加直观和易于管理。然而,Axios也可以用于同步请求,尽管这在实践中并不常见。
-
JSON:是一种轻量级的数据交换格式。主要用于在服务器和客户端之间传输数据。JSON数据可以很容易地被JavaScript解析和生成,因此它成为了Web开发中非常流行的数据格式。JSON与异步编程的关系在于,当进行异步请求时,服务器通常返回JSON格式的数据,而客户端则需要解析这些数据。但JSON本身并不局限于异步编程,它也可以用于同步操作。
-
JavaScript:用于处理用户交互、动态更新页面内容、发送HTTP请求等。当使用AJAX或Axios从服务器接收JSON数据时,JavaScript负责解析这些数据,并将其转换为可在代码中使用的对象或数组。
AJAX和Axios用于处理与服务器的请求和响应。
JSON用于在客户端和服务器之间交换数据。
JavaScript用于编写Web应用的逻辑,包括解析从服务器接收到的JSON数据。
这些技术通常一起使用,实现Web应用的动态性和交互性。
4、JSON基础语法
1)定义格式
var 变量名 = '{"key":value,"key":value,...}';
由键值对构成,多个键值对由逗号分隔;其中键必须用双引号括起来,值根据类型。例如:
var jsonStr = '{"name":"Sheldon","age":23,"addr":["北京","上海","西安"]}'
2)值的数据类型及格式
- 数字(整数或浮点数)
- 字符串(使用双引号括起来)
- 逻辑值(true或者false)
- 数组(在方括号中 [ ])如 {"persons":[{},{}]}
- 对象(在花括号中,用{}定义json格式)如 {"address":{"province":"陕西"....}}
- null
5、使用Axios发送请求、以JSON格式传递数据
使用Axios发送请求时,如果要携带复杂的数据都会以JSON格式进行传递。Axios是一个强大的工具,只需要将要提交的参数封装成js对象,并将这个js对象作为Axios的data属性值进行,它会自动将js对象转换为JSON串进行提交,也就是说Axios会自动对js对象和JSON串进行转换。
发送异步请求时,如果请求参数是JSON格式,请求方式必须是POST,因为JSON串需要放在请求体中。
var jsObject = {name:"mm"};
axios({
method:"post",
url:"http://localhost:8080/ajax-demo/axiosServlet",
data:jsObject //这里axios会将该js对象转换为json串
}).then(function (resp) {
alert(resp.data);
})
6、JSON串和Java对象的相互转换
以 json 格式的数据进行前后端交互。前端发送请求时,如果是复杂的数据就会以 json 提交给后端;而后端如果需要响应一些复杂的数据时,也需要以 json 格式将数据响应回给浏览器。
后端需要重点掌握两部分操作,可以使用Fastjson提供的API。
- 请求数据:JSON字符串转为Java对象
- 响应数据:Java对象转为JSON字符串
怎样使用:
- 导入坐标
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.62</version> </dependency>
- Java对象转JSON
String jsonStr = JSON.toJSONString(obj);
- JSON字符串转Java对象
User user = JSON.parseObject(jsonStr, User.class);
应用举例:
public class FastJsonDemo {
public static void main(String[] args) {
//1. 将Java对象转为JSON字符串
User user = new User();
user.setId(1);
user.setUsername("Sheldon");
user.setPassword("123");
String jsonString = JSON.toJSONString(user);
System.out.println(jsonString);//{"id":1,"password":"123","username":"Sheldon"}
//2. 将JSON字符串转为Java对象
User u = JSON.parseObject("{\"id\":1,\"password\":\"123\",\"username\":\"Sheldon\"}", User.class);
System.out.println(u);
}
}