[Java Web]JSON | 一种轻量级数据交换格式

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章
⭐作者主页:@逐梦苍穹
⭐所属专栏:Java Web

目录

  • 1、简介
  • 2、JSON和JS的区别
  • 3、基础语法
    • 3.1、格式
    • 3.2、简单代码
      • 3.2.1、获取值
    • 3.3、发送异步请求
  • 4、应用场景
  • 5、优缺点
  • 6、JSON和Java对象相互转换
    • 6.1、⭐Fastjson概述
    • 6.2、使用Fastjson

1、简介

  JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它是基于JavaScript语言的一种语法扩展。JSON最初是为了在客户端和服务端之间传递数据而设计的,但现在已经成为了一种通用的数据格式。
  JSON的语法非常简单,它主要由两种数据结构组成:键值对和数组。键值对由一个键和一个对应的值组成,键和值之间使用冒号分隔,不同的键值对之间使用逗号分隔。数组则是一组值的有序集合,每个值之间同样使用逗号分隔。
  JSON数据可以表示简单的数据类型,如数字、字符串、布尔值和null值,同时也可以表示复杂的数据类型,如对象和数组。JSON还支持嵌套和组合,因此可以表示非常复杂的数据结构。

2、JSON和JS的区别

  JSON(JavaScript Object Notation)和JS(JavaScript)是两个不同的概念。
  JSON是一种轻量级的数据交换格式,它是基于JavaScript语言的一种语法扩展,因此具有与JavaScript类似的语法结构。JSON主要用于在客户端和服务端之间传递数据,是一种通用的数据格式。
  JS是一种脚本语言,它可以在Web浏览器中运行,可以用于开发动态的Web应用程序,包括交互式的用户界面、动态效果和数据交互等功能。JS包含了一系列的内置对象和方法,可以操作HTML文档、响应用户交互、发送网络请求等功能。
  因此,JSON是一种数据格式,用于在不同系统之间传递数据;而JS是一种脚本语言,用于在Web浏览器中开发Web应用程序。虽然JSON和JS具有相似的语法结构,但它们的用途和作用域是不同的。

3、基础语法

3.1、格式

JSON 本质是一个字符串,但是该字符串内容是有格式要求的。
定义格式如下:
  

JSON 串的键要求必须使用双引号括起来,而值根据要表示的类型确定。value 的数据类型分为如下:

  1. 数字(整数或浮点数)
  2. 字符串(使用双引号括起来)
  3. 逻辑值(true或者nfalse)
  4. 数组(在方括号中)
  5. 对象(在花括号中)
  6. null

3.2、简单代码

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>

效果如下:
  [Java Web]JSON | 一种轻量级数据交换格式_第1张图片

3.2.1、获取值

之前获取js对象的值,是采用js对象.属性名的方式获取对应的数据。
同时JS也提供了一个对象JSON,对象方法如下:

  1. parse(str) :将 JSON字符串转换为 js 对象。使用方式->var jsObject = JSON.parse(jsonStr);
  2. stringify(obj) :将 js 对象转换为 JSON 串。使用方式->var jsonStr = JSON.stringify(jsObject)

代码演示:

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>

3.3、发送异步请求

在使用 axios 发送请求时,如果要携带复杂的数据时都会以 JSON 格式进行传递,如下:
[Java Web]JSON | 一种轻量级数据交换格式_第2张图片

data的请求参数是不需要去手动拼接的,可以提前定义一个 js 对象,用来封装需要提交的参数,然后使用 JSON.stringify(js对象) 转换为 JSON 串,再将该 JSON 串作为 axios 的 data 属性值进行请求参数的提交。

代码还可以简化:
[Java Web]JSON | 一种轻量级数据交换格式_第3张图片

  只需要将需要提交的参数封装成 js 对象,并将该 js 对象作为 axios 的 data 属性值,axios会自动将 js 对象转换为 JSON 串进行提交

4、应用场景

JSON(JavaScript Object Notation)具有以下几个应用场景:

  1. 数据交换:JSON是一种轻量级的数据交换格式,通常用于在不同的系统之间传递数据。它被广泛应用于Web应用程序和API中,以及移动应用程序和其他各种应用程序中。
  2. 存储配置数据:JSON可以用来存储和读取配置数据。例如,在一些应用程序中,可以使用JSON格式来存储用户的偏好设置或应用程序的配置信息。
  3. 存储日志数据:JSON可以用来存储和分析日志数据。例如,在Web应用程序中,可以使用JSON格式来存储用户访问日志或错误日志。

5、优缺点

JSON的优点包括:

  1. 简洁清晰:JSON的语法结构简单,易于读写和理解。它使用键值对和数组等数据结构,支持嵌套和组合,可以表示非常复杂的数据结构。
  2. 跨平台支持:由于JSON是一种通用的数据格式,因此被广泛用于Web应用程序和API中,以及移动应用程序和其他各种应用程序中。它可以跨平台使用,不受语言和系统的限制。
  3. 解析速度快:JSON的解析速度快,可以快速地将数据转换为对象或数组等数据类型。

JSON的缺点包括:

  1. 不适合存储大量数据:由于JSON是一种文本格式,因此不适合存储大量的数据。当需要存储大量数据时,可以考虑使用其他格式,如二进制格式。
  2. 不支持注释:JSON不支持注释,因此在需要注释数据时,必须将注释信息嵌入到键或值中,会影响数据的可读性。
  3. 不支持自定义类型:JSON只支持JavaScript中的一些基本数据类型,如字符串、数字、布尔值、数组和对象等,不支持自定义类型。

6、JSON和Java对象相互转换

在前后端数据进行交互的过程中,作为后端开发人员,后端需要掌握的操作为:

  1. 请求数据:JSON字符串转为Java对象
  2. 响应数据:Java对象转为JSON字符串

实现方式:使用Fastjson的这个API

6.1、⭐Fastjson概述

Fastjson 是阿里巴巴提供的一个Java语言编写的高性能功能完善的 JSON 库,是目前Java语言中最快的 JSON 库,可以实现 Java 对象和 JSON 字符串的相互转换。

Fastjson提供了一些特殊的功能,使得它成为一个高效、可靠的JSON处理器/库,如:

  1. 快速解析和生成JSON数据:Fastjson提供了高效的解析器和生成器,可以快速处理大量的JSON数据,使得Fastjson成为一个高性能的JSON处理器/库。
  2. 对象自动序列化:Fastjson可以自动将Java对象序列化为JSON格式的数据,并且支持自定义序列化规则。
  3. 支持复杂数据类型:Fastjson可以处理Java对象中包含的复杂数据类型,如数组、集合、枚举等。
  4. 支持注解:Fastjson支持注解,可以通过注解来控制序列化和反序列化过程中的行为。

6.2、使用Fastjson

使用步骤如下:

  1. 导入依赖
  2. Java对象转JSON
  3. JSON转Java对象

①导入需要的驱动包,这里直接使用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;
    }
}

控制台输出:
  

你可能感兴趣的:(Java,Web,java,前端,json,javascript,html5)