作者主页Designer 小郑
作者简介:3年JAVA全栈开发经验,专注JAVA技术、系统定制、远程指导,致力于企业数字化转型,CSDN学院、蓝桥云课认证讲师。
主打方向:Vue、SpringBoot、微信小程序

本文讲解了 JSON 的概念,以及 Java 中 JSON 对象和字符串的转换方法,并给出了样例代码,JSON 是一种轻量级的数据交换格式,常用于 Web 应用程序中的数据传输。

在这里插入图片描述


一、什么是JSON

JSON 是一种轻量级的数据交换格式,常用于 Web 应用程序中的数据传输

JSON 基于 JavaScript 语法,但是可以被多种编程语言解析和生成。

JSON采用键值对的方式来表示数据,其中键是一个字符串,值可以是字符串、数字、布尔值、对象、数组或null,它具有以下 5 5 5 个特点,同学们可以简单做一个了解。

  1. 简洁性:JSON使用简单的语法来表示数据,易于阅读和编写。
  2. 可读性:JSON的文本格式是纯文本,可以被人类和机器都很容易理解。
  3. 跨语言支持:JSON是一种与语言无关的数据格式,可以被多种编程语言解析和生成。
  4. 数据结构灵活:JSON支持复杂的数据结构,可以嵌套对象和数组。
  5. 数据传输效率高:JSON的数据量较小,传输速度快,适用于网络传输。

在这里插入图片描述

二、JSON的应用场景

JSON 在各种应用中都有广泛的应用场景,以下是一些常见的应用场景,请同学们认真学习。

  1. 前后端数据交互:JSON 常用于前后端数据交互,可以将服务器端的数据以 JSON 格式发送给前端,前端再使用 JavaScript 解析JSON数据进行展示和处理。
  2. API接口设计:许多 Web 服务的API接口都使用 JSON 作为数据交换格式。通过将数据以 JSON 格式发送到 API 接口,可以实现数据的传输和交互。
  3. 数据存储:JSON 可以用于存储和传输配置文件,用户偏好设置等非结构化数据。它可以将数据序列化为 JSON 格式后存储在文件或数据库中,并在需要时重新解析为对象。
  4. 日志记录:JSON 可以用于记录日志信息,将复杂的结构化数据以 JSON 格式记录下来,方便后续的分析和处理。
  5. 移动应用程序开发:JSON 在移动应用程序的开发中也得到了广泛应用,可以用于数据传输、持久化存储、配置文件等方面。
  6. 数据交换:JSON 作为一种通用的数据交换格式,可以用于不同系统之间、不同平台之间的数据传输和交换,实现系统之间的数据共享和互操作。

总的来说,JSON 的灵活性、易读性和跨语言支持使其在各个领域和应用中得到了广泛应用,成为一种常用的数据交换和存储格式。

在这里插入图片描述


三、JSON对象转字符串

在 Java 中,可以使用不同的库来实现 JSON 对象转字符串的操作,比如使用 Jackson 库和 Gson 库来实现。

3.1 使用 Jackson 库实现 JSON 对象转字符串

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonExample {
    public static void main(String[] args) {
        // 创建一个对象
        MyObject myObject = new MyObject("John", 25);

        // 创建ObjectMapper对象
        ObjectMapper objectMapper = new ObjectMapper();
        
        try {
            // 将对象转换为JSON字符串
            String jsonString = objectMapper.writeValueAsString(myObject);
            System.out.println(jsonString);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }
}

class MyObject {
    private String name;
    private int age;

    public MyObject(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 省略getter和setter方法
}

3.2 使用 Gson 库实现 JSON 对象转字符串

import com.google.gson.Gson;

public class JsonExample {
    public static void main(String[] args) {
        // 创建一个对象
        MyObject myObject = new MyObject("John", 25);

        // 创建Gson对象
        Gson gson = new Gson();
        
        // 将对象转换为JSON字符串
        String jsonString = gson.toJson(myObject);
        System.out.println(jsonString);
    }
}

class MyObject {
    private String name;
    private int age;

    public MyObject(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // 省略getter和setter方法
}

同学们可以使用 Jackson 库或 Gson 库将一个自定义的 Java 对象转换为 JSON 字符串,可以根据自己的需求选择适合的库来实现 JSON 对象转字符串的功能。

在这里插入图片描述


四、JSON字符串转对象

在 Java 中,可以使用不同的库来实现 JSON 字符串转对象的操作,比如使用 Jackson 库和 Gson 库来实现。

4.1 使用 Jackson 库实现 JSON 字符串转对象

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonExample {
    public static void main(String[] args) {
        String jsonString = "{\"name\":\"John\",\"age\":25}";

        ObjectMapper objectMapper = new ObjectMapper();
        try {
            MyObject myObject = objectMapper.readValue(jsonString, MyObject.class);
            System.out.println(myObject);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class MyObject {
    private String name;
    private int age;

    // 省略getter和setter方法

    @Override
    public String toString() {
        return "MyObject{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

4.2 使用 Gson 库实现 JSON 字符串转对象

import com.google.gson.Gson;

public class JsonExample {
    public static void main(String[] args) {
        String jsonString = "{\"name\":\"John\",\"age\":25}";

        Gson gson = new Gson();
        MyObject myObject = gson.fromJson(jsonString, MyObject.class);
        System.out.println(myObject);
    }
}

class MyObject {
    private String name;
    private int age;

    // 省略getter和setter方法

    @Override
    public String toString() {
        return "MyObject{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

同学们可以使用 Jackson 库或 Gson 库将一个自定义的 JSON 字符串 转换为 Java 对象,可以根据自己的需求选择适合的库来实现字符串 转 JSON 对象的功能。

在这里插入图片描述


五、JSON面试题

一、什么是JSON?JSON的全称是什么?

JSON 是一种轻量级的数据交换格式,它采用简洁的文本格式来表示结构化数据。

二、在 Java 中,有哪些常用的 JSON 处理库?

常用的 JSON 处理库有 JacksonGson、Fastjson 等。

三、如何将 Java 对象转换为 JSON 字符串?

可以使用 JSON 处理库提供的API,如 Jackson 库的 ObjectMapper 类中的 writeValueAsString() 方法,或者 Gson 库的 toJson() 方法,将 Java 对象转换为 JSON 字符串。

四、如何将 JSON 字符串转换为Java对象?

同样可以使用 JSON 处理库提供的 API,如 Jackson 库的 ObjectMapper 类中的 readValue() 方法,或者 Gson 库的 fromJson() 方法,

五、如何处理 JSON 数组?

可以使用 JSONArray 类来处理 JSON 数组,通过索引获取数组元素,或者使用循环遍历数组元素。

六、如何处理嵌套的 JSON 对象?

JSON 对象可以是嵌套的,可以通过递归的方式解析嵌套的 JSON 对象,或者使用对象映射的方式将嵌套的 JSON 对象映射为 Java 对象。

七、JSON 中的数据类型有哪些?

JSON中的数据类型包括 字符串(String)数字(Number)布尔值(Boolean)数组(Array)对象(Object)null

八、如何处理 JSON 中的日期和时间?

可以将日期和时间转换为特定的格式的字符串进行存储和传输,然后在解析时再将字符串转换为日期和时间类型。

九、如何处理 JSON 中的特殊字符?

在 JSON 中,特殊字符需要进行转义,如双引号需要用 " 表示,换行符需要用 \n 表示。

十、如何处理 JSON 中的空字段?

可以使用 n u l l null null 值来表示 JSON 中的空字段,或者根据具体需求使用默认值或空字符串来表示。


六、总结

本文讲解了 JSON 的概念,以及 Java 中 JSON 对象和字符串的转换方法,并给出了样例代码,在下一篇博客中,将讲解 Java 中 XML 和字符串的转换问题。

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐