【JavaSE专栏88】Java字符串和JSON对象的转换,转来转去就是这么玩!

简介: 【JavaSE专栏88】Java字符串和JSON对象的转换,转来转去就是这么玩!

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

一、什么是JSON

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

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

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

  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 nullnull 值来表示 JSON 中的空字段,或者根据具体需求使用默认值或空字符串来表示。


六、总结

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


相关实践学习
自建数据库迁移到云数据库
本场景将引导您将网站的自建数据库平滑迁移至云数据库RDS。通过使用RDS,您可以获得稳定、可靠和安全的企业级数据库服务,可以更加专注于发展核心业务,无需过多担心数据库的管理和维护。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
10月前
|
设计模式 网络协议 数据可视化
Java 设计模式之状态模式:让对象的行为随状态优雅变化
状态模式通过封装对象的状态,使行为随状态变化而改变。以订单为例,将待支付、已支付等状态独立成类,消除冗长条件判断,提升代码可维护性与扩展性,适用于状态多、转换复杂的场景。
1100 157
|
11月前
|
SQL JSON Java
告别字符串拼接:用Java文本块优雅处理多行字符串
告别字符串拼接:用Java文本块优雅处理多行字符串
637 108
|
10月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
442 1
|
10月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
414 1
|
12月前
|
缓存 安全 Java
Java反射机制:动态操作类与对象
Java反射机制是运行时动态操作类与对象的强大工具,支持获取类信息、动态创建实例、调用方法、访问字段等。它在框架开发、依赖注入、动态代理等方面有广泛应用,但也存在性能开销和安全风险。本文详解反射核心API、实战案例及性能优化策略,助你掌握Java动态编程精髓。
|
存储 人工智能 JavaScript
Java从作用域到对象高级应用​
本内容详细讲解了JavaScript中的作用域类型(函数作用域、块作用域、全局作用域)、作用域链、垃圾回收机制、闭包、变量提升、函数参数、数组方法、内置构造函数、对象高级知识、原型链、对象赋值、深浅拷贝、递归、异常处理及this指向等内容,全面覆盖JS核心概念与编程技巧。
145 0
|
存储 Java
Java对象的内存布局
在HotSpot虚拟机中,Java对象的内存布局分为三部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头包含Mark Word、Class对象指针及数组长度;实例数据存储对象的实际字段内容;对齐填充用于确保对象大小为8字节的整数倍。
252 0
|
JSON Java Maven
在Java中,我们可以使用第三方库来解析JSON数据
在Java中,我们可以使用第三方库来解析JSON数据。这里以常用的Jackson库为例,演示如何解析JSON数据。
316 1
|
JSON Java Maven
|
JSON Java API
在 Java 中解析 JSON ArrayList 的详细指南
【8月更文挑战第23天】
806 1