⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章
⭐作者主页:@逐梦苍穹
⭐所属专栏:Java Web
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是基于JavaScript语言的一种语法扩展。JSON最初是为了在客户端和服务端之间传递数据而设计的,但现在已经成为了一种通用的数据格式。
JSON的语法非常简单,它主要由两种数据结构组成:键值对和数组。键值对由一个键和一个对应的值组成,键和值之间使用冒号分隔,不同的键值对之间使用逗号分隔。数组则是一组值的有序集合,每个值之间同样使用逗号分隔。
JSON数据可以表示简单的数据类型,如数字、字符串、布尔值和null值,同时也可以表示复杂的数据类型,如对象和数组。JSON还支持嵌套和组合,因此可以表示非常复杂的数据结构。
JSON(JavaScript Object Notation)和JS(JavaScript)是两个不同的概念。
JSON是一种轻量级的数据交换格式,它是基于JavaScript语言的一种语法扩展,因此具有与JavaScript类似的语法结构。JSON主要用于在客户端和服务端之间传递数据,是一种通用的数据格式。
JS是一种脚本语言,它可以在Web浏览器中运行,可以用于开发动态的Web应用程序,包括交互式的用户界面、动态效果和数据交互等功能。JS包含了一系列的内置对象和方法,可以操作HTML文档、响应用户交互、发送网络请求等功能。
因此,JSON是一种数据格式,用于在不同系统之间传递数据;而JS是一种脚本语言,用于在Web浏览器中开发Web应用程序。虽然JSON和JS具有相似的语法结构,但它们的用途和作用域是不同的。
JSON 本质是一个字符串,但是该字符串内容是有格式要求的。
定义格式如下:
JSON 串的键要求必须使用双引号括起来,而值根据要表示的类型确定。value 的数据类型分为如下:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<script>
//1、定义一个JSON格式的字符串
var jsonString = '{"name":"zhangsan","age":18,"address":["某个城市","某个区"]}';
alert(jsonString);
script>
body>
html>
之前获取js对象的值,是采用js对象.属性名的方式获取对应的数据。
同时JS也提供了一个对象JSON,对象方法如下:
代码演示:
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
head>
<body>
<script>
//1、定义一个JSON格式的字符串
var jsonString = '{"name":"zhangsan","age":18,"address":["某个城市","某个区"]}';
alert(jsonString);
//2、把JSON转为JS对象
let jsObject = JSON.parse(jsonString);
for (var key in jsObject) {
if (jsObject.hasOwnProperty(key)) {
alert(key);
}
}
//3、把JS转为JSON
alert(JSON.stringify(jsObject));
script>
body>
html>
在使用 axios 发送请求时,如果要携带复杂的数据时都会以 JSON 格式进行传递,如下:
data的请求参数是不需要去手动拼接的,可以提前定义一个 js 对象,用来封装需要提交的参数,然后使用 JSON.stringify(js对象) 转换为 JSON 串,再将该 JSON 串作为 axios 的 data 属性值进行请求参数的提交。
代码还可以简化:
只需要将需要提交的参数封装成 js 对象,并将该 js 对象作为 axios 的 data 属性值,axios会自动将 js 对象转换为 JSON 串进行提交
JSON(JavaScript Object Notation)具有以下几个应用场景:
JSON的优点包括:
JSON的缺点包括:
在前后端数据进行交互的过程中,作为后端开发人员,后端需要掌握的操作为:
实现方式:使用Fastjson的这个API
Fastjson 是阿里巴巴提供的一个Java语言编写的高性能功能完善的 JSON 库,是目前Java语言中最快的 JSON 库,可以实现 Java 对象和 JSON 字符串的相互转换。
Fastjson提供了一些特殊的功能,使得它成为一个高效、可靠的JSON处理器/库,如:
使用步骤如下:
①导入需要的驱动包,这里直接使用maven坐标的形式:
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.62version>
dependency>
②Java对象转JSON->String jsonStr = JSON.toJSONString(obj);
③JSON转Java对象->User user = JSON.parseObject(jsonStr, User.class);
完整代码如下:
package com.xzl.web;
import com.alibaba.fastjson.JSON;
/**
* @author 逐梦苍穹
* @date 2023/4/3 15:48
*/
public class FastJsonDemo {
public static void main(String[] args) {
//1. 将Java对象转为JSON字符串
User user = new User();
user.setId(1);
user.setUsername("zhangsan");
user.setPassword("123");
String jsonString = JSON.toJSONString(user);
System.out.println(jsonString);
//2. 将JSON字符串转为Java对象
User u = JSON.parseObject(jsonString, User.class);
System.out.println(u.toString());
}
}
class User{
private int id;
private String username;
private String pass_w_D;
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", pass_W_D='" + pass_w_D + '\'' +
'}';
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return pass_w_D;
}
public void setPassword(String password) {
this.pass_w_D = password;
}
}