Java中解析JSON和生成JSON字符串的全面指南

 更新时间:2025年03月19日 09:09:49   作者:疯狂的键盘侠  
在现代 Java 开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛应用于前后端交互、配置文件读取以及各类数据存储场景,本文将深入剖析常用库及对应实现方式,助力您轻松驾驭 JSON 数据处理,需要的朋友可以参考下

引言

在现代 Java 开发中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛应用于前后端交互、配置文件读取以及各类数据存储场景。熟练掌握 Java 中解析 JSON 和生成 JSON 字符串的方法,是每位开发者必备的关键技能。本文将深入剖析常用库及对应实现方式,助力您轻松驾驭 JSON 数据处理。

一、使用 Jackson 库进行 JSON 操作

1. 引入依赖

若使用 Maven 项目,在 pom.xml 文件中添加如下依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.14.2</version> <!-- 可按需调整版本 -->
</dependency>

2. 解析 JSON 字符串为 Java 对象

假设我们有如下简单的 JSON 字符串:{"name":"张三","age":20,"hobbies":["阅读","运动"]},以及对应的 Java 类 Person

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonParseExample {
    public static void main(String[] args) throws Exception {
        String json = "{\"name\":\"张三\",\"age\":20,\"hobbies\":[\"阅读\",\"运动\"]}";
        ObjectMapper mapper = new ObjectMapper();
        Person person = mapper.readValue(json, Person.class);
        System.out.println(person.getName()); 
        // 输出:张三
    }
}

class Person {
    private String name;
    private int age;
    private String[] hobbies;

    // 省略 getter 和 setter 方法
}

ObjectMapper 类是 Jackson 的核心,readValue 方法依据指定的目标类 Person.class,自动将 JSON 字符串映射为 Java 对象实例,精准解析每个字段值,完成数据转换。

3. 生成 JSON 字符串

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonGenerateExample {
    public static void main(String[] args) throws Exception {
        Person person = new Person();
        person.setName("李四");
        person.setAge(25);
        person.setHobbies(new String[]{"音乐", "绘画"});
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(person);
        System.out.println(json); 
        // 输出:{"name":"李四","age":25,"hobbies":["音乐","绘画"]}
    }
}

调用 writeValueAsString 方法,ObjectMapper 把 Java 对象 person 序列化为标准 JSON 格式字符串,准备用于网络传输或存储,方便快捷且格式规范。

二、基于 Gson 库的 JSON 处理

1. 导入 Gson 库

对于 Maven 项目,添加依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version> <!-- 依实际调整 -->
</dependency>

2. 解析 JSON

使用相同的 Person 类示例,解析 JSON 如下

import com.google.gson.Gson;

public class GsonParseExample {
    public static void main(String[] args) {
        String json = "{\"name\":\"王五\",\"age\":30,\"hobbies\":[\"旅游\",\"摄影\"]}";
        Gson gson = new Gson();
        Person person = gson.fromJson(json, Person.class);
        System.out.println(person.getName()); 
        // 输出:王五
    }
}

Gson 类的 fromJson 函数高效解析 JSON,无缝填充 Person 对象,对复杂嵌套结构同样应对自如,精准抽取数据。

3. 生成 JSON 字符串

import com.google.gson.Gson;

public class GsonGenerateExample {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("赵六");
        person.setAge(35);
        person.setHobbies(new String[]{"书法", "下棋"});
        Gson gson = new Gson();
        String json = gson.toJson(person);
        System.out.println(json); 
        // 输出:{"name":"赵六","age":35,"hobbies":["书法","下棋"]}
    }
}

toJson 方法将 person 对象迅速转化为 JSON 串,代码简洁,输出格式紧凑清晰,适配多种数据传输需求。

三、FastJSON 的应用

1. 引入 FastJSON

Maven 依赖配置:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>2.0.33</version> <!-- 注意版本适配 -->
</dependency>

2. 解析 JSON

import com.alibaba.fastjson.JSON;

public class FastJSONParseExample {
    public static void main(String[] args) {
        String json = "{\"name\":\"孙七\",\"age\":40,\"hobbies\":[\"烹饪\",\"手工\"]}";
        Person person = JSON.parseObject(json, Person.class);
        System.out.println(person.getName()); 
        // 输出:孙七
    }
}

FastJSON 的 parseObject 方法以高性能著称,快速解析 JSON 为 Java 对象,处理大规模数据解析时优势显著,能高效满足高并发业务场景。

3. 生成 JSON

import com.alibaba.fastjson.JSON;

public class FastJSONGenerateExample {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("周八");
        person.setAge(45);
        person.setHobbies(new String[]{"跳舞", "唱歌"});
        String json = JSON.toJSONString(person);
        System.out.println(json); 
        // 输出:{"age":45,"hobbies":["跳舞","唱歌"],"name":"周八"}
    }
}

toJSONString 实现对象到 JSON 字符串极速转换,生成字符串格式工整,在追求极致性能的分布式系统、大数据处理场景频繁出镜,确保数据流转高效顺畅。

无论选择 Jackson、Gson 还是 FastJSON,均能依据项目特性实现 JSON 与 Java 数据间灵活互转。小体量项目注重简洁可用,Gson 或 FastJSON 轻巧灵活;大型企业级应用,Jackson 的丰富功能与稳定性更能扛鼎,适配复杂业务逻辑与严苛性能要求,开发者按需抉择,精准施为,定能在 JSON 数据海洋游刃有余。

以上就是Java中解析JSON和生成JSON字符串的全面指南的详细内容,更多关于Java解析JSON和生成JSON字符串的资料请关注脚本之家其它相关文章!

相关文章

  • Spring如何使用通知 Advice 管理事务

    Spring如何使用通知 Advice 管理事务

    Spring 默认采用声明式事务管理(通过配置的方式) ,也可以实现编程式事务管理,这篇文章主要介绍了Spring使用通知Advice管理事务,需要的朋友可以参考下
    2023-06-06
  • Spring中的@DependsOn注解使用解析

    Spring中的@DependsOn注解使用解析

    这篇文章主要介绍了Spring中的@DependsOn注解使用解析,@DependsOn注解可以定义在类和方法上,意思是我这个组件要依赖于另一个组件,也就是说被依赖的组件会比该组件先注册到IOC容器中,需要的朋友可以参考下
    2024-01-01
  • Http学习之组装报文

    Http学习之组装报文

    这篇文章主要介绍了Http学习之组装报文,组装报文就是指组装HTTP响应报文,你需要返回客户请求的相应资源,通常一个完整的报文包括报文头和报文体,一起来看看吧
    2023-04-04
  • Java实现经典游戏2048的示例代码

    Java实现经典游戏2048的示例代码

    2014年Gabriele Cirulli利用周末的时间写2048这个游戏的程序。本文将用java语言实现这一经典游戏,并采用了swing技术进行了界面化处理,需要的可以参考一下
    2022-02-02
  • Java字符串格式化Formatter和printf()的使用详解

    Java字符串格式化Formatter和printf()的使用详解

    这篇文章主要介绍了Java字符串格式化Formatter和printf()的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • 关于Spring中Bean的创建进行更多方面的控制

    关于Spring中Bean的创建进行更多方面的控制

    今天小编就为大家分享一篇关于关于Spring中Bean的创建进行更多方面的控制,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • SpringBoot+MySQL实现读写分离的多种具体方案

    SpringBoot+MySQL实现读写分离的多种具体方案

    在高并发和大数据量的场景下,数据库成为了系统的瓶颈。为了提高数据库的处理能力和性能,读写分离成为了一种常用的解决方案,本文将介绍在Spring Boot项目中实现MySQL数据库读写分离的多种具体方案,需要的朋友可以参考下
    2023-06-06
  • java 中模拟TCP传输的客户端和服务端实例详解

    java 中模拟TCP传输的客户端和服务端实例详解

    这篇文章主要介绍了java 中模拟TCP传输的客户端和服务端实例详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • Java设计模式初识之备忘录模式详解

    Java设计模式初识之备忘录模式详解

    备忘录设计模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用于实现防丢失、撤销、恢复等功能。本文将通过示例为大家介绍一些备忘录模式的定义与使用,需要的可以参考一下
    2022-11-11
  • 使用Java生成JWT令牌的示例代码

    使用Java生成JWT令牌的示例代码

    json-web-token简称java web令牌,也称作JWT,是一种可以实现跨域身份验证身份的方案,jwt不加密传输数据,但能够通过数据前面验证数据的未被篡改,本文给大家介绍了如何使用Java生成JWT令牌,需要的朋友可以参考下
    2024-04-04

最新评论