Java-Fastjson介绍与实践

发布时间:2024年01月11日

🌺个人主页:杨永杰825_Spring,Mysql,多线程-CSDN博客

?每日一句:成为架构师路途遥远

📢欢迎大家:关注🔍+点赞👍+评论📝+收藏??

目录

前言

方法

案例

除了Fastjson,还有哪些常用的Java工具类?

如何保证Fastjson的安全性?

Spring配置


前言

  • Fastjson?是一个用 Java 语言编写的高性能 JSON 处理库,它的主要特点是速度快,使用方便。
  • Fastjson?提供了丰富的 API ,用于 JSON 的序列化和反序列化。它可以将 Java 对象转换为 JSON 字符串,也可以将 JSON 字符串转换为 Java 对象。此外,Fastjson?还提供了对 JSON 数据的修改、查询等操作。

方法

Fastjson是一种常用的Java工具类,用于JSON格式字符串与JSON对象及JavaBean之间的转换。其方法大致分为序列化和反序列化两类。常用的方法有:

  • toJSONString():将Java对象序列化为JSON字符串。
  • parseObject():将JSON字符串解析为Java对象。
  • toJSON():将Java对象转换为JSON对象。
  • parseArray():将JSON数组字符串解析为Java数组。

Fastjson还提供了许多其他的方法,你可以根据具体需求选择使用。若你还有其他疑问,可以继续向我提问。

案例

import java.util.ArrayList;
import java.util.List;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

public class Fastjson {
    public static void main(String[] args) {
        People people = new People();
        people.setAge(120);
        people.setName("xixixi");
        List<People> list = new ArrayList<>();
        list.add(people);

        System.out.println(JSON.toJSON(people));
        System.out.println(JSONObject.toJSON(people));
        System.out.println(JSON.toJSON(list));

        String peoplejson = "{'name':'hheheheh','age':13}";
        People p = JSONObject.parseObject(peoplejson, People.class);
        System.out.println(p.getAge());
    }
}

class People {
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

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

    public String getName() {
        return name;
    }

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

输出结果为:

{"name":"xixixi","age":120}
{"name":"xixixi","age":120}
[[{"name":"xixixi","age":120}]]
13

除了Fastjson,还有哪些常用的Java工具类?

除了Fastjson,还有其他一些常用的JSON处理库,例如:

  • Gson:项目地址为GitHub - google/gson: A Java serialization/deserialization library to convert Java Objects into JSON and back,是目前功能较全的Json解析神器,最初是为满足Google公司内部需求而由Google自行研发而来,自2008年5月发布第一版以来,已被许多公司或用户应用。
  • Jackson:是一个广泛使用的开源Java JSON处理库,它提供了高效、灵活和易用的API,适用于各种应用场景。
  • Json-lib:是一个轻量级的Java JSON处理库,它支持多种数据类型和复杂的数据结构,并且提供了方便的工具和方法。

这些库都有各自的特点和适用场景,你可以根据具体需求和使用场景选择适合的库。

如何保证Fastjson的安全性?

要保证Fastjson的安全性,可以考虑以下几点:

  • 及时更新版本:关注官方的更新公告,对受影响的版本及时升级至最新版本。
  • 配置安全模式:Fastjson在1.2.68及之后的版本中引入了安全模式。配置安全模式后,无论白名单和黑名单,都不支持autoType,可一定程度上缓解反序列化Gadgets类变种攻击。

具体的配置方法可参考:fastjson_safemode · alibaba/fastjson Wiki · GitHub。建议在使用Fastjson时,根据具体的应用场景和安全需求,采取适当的安全措施,以确保数据的安全性。

Spring配置

如果需要进行一些配置,比如设置序列化和反序列化的策略,可以在 Spring Boot 的配置类中添加相关的配置?

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FastjsonConfiguration {

    @Bean
    public FastJsonConfig fastJsonConfig() {
        // 配置 Fastjson
        FastJsonConfig config = new FastJsonConfig();
        config.setSerializerFeatures(
                SerializerFeature.PrettyFormat,
                SerializerFeature.WriteNullStringAsEmpty
        );

        return config;
    }
}
文章来源:https://blog.csdn.net/qq_31536117/article/details/135494100
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。