Java 项目中 对象转换成JSON格式字符串

269 阅读3分钟

如何把Java对象搞成JSON格式的字符串,举几个常用项目中常用的。

img.png

1、使用Jackson库

img.png

Jackson是由FasterXML提供的一个多功能Java库,主要用于序列化Java对象到JSON格式,以及将JSON字符串反序列化成Java对象。 Jackson的核心优势在于性能和速度,同时它也提供了丰富的功能,比如数据绑定、流式API和Tree模型。

它的配置和定制性也很强,比如可以通过注解来控制序列化和反序列化的行为。 Jackson在处理复杂的对象图关系时表现得非常好,尤其是在处理循环引用等问题时。 而且 Jackson 的社区支持非常活跃,一直在持续更新,这也就意味着它在安全性方面相对有保障。

下面是一个简单的demo示例:

import com.fasterxml.jackson.databind.ObjectMapper;

// 创建一个简单的用户类
public class User {
    private String name;
    private int age;
    
    // 构造函数、getters和setters省略
}

// 转换示例
public class JacksonExample {
    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();
        User user = new User("小明", 20);
        
        try {
            // 对象转JSON字符串
            String jsonResult = mapper.writeValueAsString(user);
            System.out.println(jsonResult);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2、使用Gson库

img.png

Gson是Google开发的一个Java库,可以轻松地将Java对象转换成JSON格式,反之亦然。 Gson的设计初衷是为了易用性和简单性,它能够直接转换常见的Java字段和对象,没有太多复杂的配置。 Gson在API设计上非常直观,使得开发者能够快速上手和使用。它提供了广泛的配置选项,允许自定义序列化和反序列化策略。 Gson在处理泛型和未知字段时也相当灵活,这让它在处理复杂的Java类型时显得格外方便。

import com.google.gson.Gson;

// 用户类就不重复了,跟上面一样的

// 使用Gson转换的示例
public class GsonExample {
    public static void main(String[] args) {
        Gson gson = new Gson();
        User user = new User("小红", 25);
        
        // 对象转JSON字符串
        String jsonResult = gson.toJson(user);
        System.out.println(jsonResult);
    }
}

3、使用Fastjson库

img.png

Fastjson是一个由阿里巴巴开发的高性能JSON处理库,特别适用于Java语言。 它的主要特点是速度快,提供了全面的功能支持,包括数据解析、数据生成、以及Java泛型等,并且也支持直接将JSON字符串转换为Java对象。

Fastjson在设计上非常注重性能,特别是在大量数据处理时的性能表现。它同时支持多种JSON标准格式和编码,具有良好的跨语言性。 不过,正如之前提到的,Fastjson曾经出现过一些安全问题,所以在使用时需要特别注意安全方面的升级和防护。

import com.alibaba.fastjson.JSON;

// 用户类继续沿用

// Fastjson的转换示例
public class FastjsonExample {
    public static void main(String[] args) {
        User user = new User("小刚", 30);
        
        // 对象转JSON字符串
        String jsonResult = JSON.toJSONString(user);
        System.out.println(jsonResult);
    }
}

在使用上面这些库的时候,记得要引入对应的依赖,比如在Maven项目中,你需要在pom.xml文件中添加相应的依赖项,Gradle同理。

需要注意的是:

项目中尽量避免混用多个JSON库,这样会增加应用的复杂性,并可能导致冲突和额外的性能开销,而且还会增加依赖冲突的可能性。

最后说一句(求关注,求赞,别白嫖我)

最近无意间获得一份阿里大佬写的刷题笔记和面经,一下子打通了我的任督二脉,进大厂原来没那么难。

这是大佬写的, 7701页的阿里大佬写的刷题笔记,让我offer拿到手软

求一键三连:点赞、分享、收藏

点赞对我真的非常重要!在线求赞,加个关注我会非常感激!@小郑说编程i