主流json解析框架示例

主流json解析框架示例

jackson、gson、fastjson/fastjson2三种主流json解析框架对比

● 性能:在性能方面,Fastjson通常被认为是最快的JSON解析库,其次是Jackson和Gson,json-lib的性能相对较低。

● API和功能:Jackson提供了非常灵活、强大的API,支持各种高级功能,例如树模型、数据绑定、注解等。Gson也提供了简单易用的API,但功能相对较少。Fastjson提供了丰富的功能和选项,但API可能相对复杂一些。json-lib在功能上相对较弱。

● 社区和支持:Jackson和Gson拥有广泛的社区支持和文档,使用者较多,问题容易获得解答。Fastjson由于其阿里巴巴的背景,在中国有较大的用户群体。目前建议使用Fastjson2。

● 使用场景:对于性能要求较高的场景,可以选择Fastjson。对于需要强大功能和灵活性的场景,Jackson是一个不错的选择。对于简单的JSON解析任务,Gson提供了简单易用的API。json-lib因为其开发已停止,不建议在新项目中使用。

使用示例

引入pom依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.4</version>
</dependency>

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>

<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.40</version>
</dependency>

接下来,分别编写使用Jackson、Gson、Fastjson和json-lib的代码来完成以下任务:

  1. 将Java对象转换为JSON字符串;
  2. 将JSON字符串转换为Java对象。
/**
 * @author shui
 * @description 测试Json
 * @created 2024/7/12
 */
public class JsonProcessExample {

    public static void main(String[] args) {
        User user = new User("John", 30);

        // 使用Jackson
        System.out.println("Using Jackson:");
        jacksonDemo(user);

        // 使用Gson
        System.out.println("Using Gson:");
        gsonDemo(user);

        // 使用Fastjson
        System.out.println("Using Fastjson:");
        fastjsonDemo(user);
    }

    private static void jacksonDemo(User user) {
        try {
            // 将Java对象转换为JSON字符串
            ObjectMapper objectMapper = new ObjectMapper();
            String json = objectMapper.writeValueAsString(user);
            System.out.println("Serialized JSON: " + json);

            // 将JSON字符串转换为Java对象
            User deserializedUser = objectMapper.readValue(json, User.class);
            System.out.println("Deserialized User: " + deserializedUser);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void gsonDemo(User user) {
        try {
            // 将Java对象转换为JSON字符串
            Gson gson = new Gson();
            String json = gson.toJson(user);
            System.out.println("Serialized JSON: " + json);

            // 将JSON字符串转换为Java对象
            User deserializedUser = gson.fromJson(json, User.class);
            System.out.println("Deserialized User: " + deserializedUser);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void fastjsonDemo(User user) {
        try {
            // 将Java对象转换为JSON字符串
            String json = JSON.toJSONString(user);
            System.out.println("Serialized JSON: " + json);

            // 将JSON字符串转换为Java对象
            User deserializedUser = JSON.parseObject(json, User.class);
            System.out.println("Deserialized User: " + deserializedUser);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
class User{
    private String name;
    private int age;

    // 无参构造函数(必须有)
    public User() {}

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

    // getter和setter方法(必须有)
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
posted @ 2024-07-12 20:33  不要划水  阅读(24)  评论(0编辑  收藏  举报