声明:本站文章均为作者个人原创,图片均为实际截图。如有需要请收藏网站,禁止转载,谢谢配合!!!

在前后端数据传输交互中,经常会遇到字符串(String)与json,XML等格式相互转换与解析,其中json以跨语言,跨前后端的优点在开发中被频繁使用,基本上可以说是标准的数据交换格式。fastjson 是一个java语言编写的高性能且功能完善的JSON库,它采用一种“假定有序快速匹配”的算法,把JSON Parse 的性能提升到了极致。它的接口简单易用,已经被广泛使用在缓存序列化,协议交互,Web输出等各种应用场景中。

1 引入Fastjson依赖

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.83</version>
</dependency>

2 基本使用

java对象转json

    @Test
    public void testObj2Json(){
        Student student = new Student();
        student.setId(1);
        student.setName("八点博客");
        student.setAge(10);
        student.setEmail("badianboke@163.com");
        student.setBirthday(getDate());
        String res = JSON.toJSONString(student);
        System.out.println(res);
    }

    public Date getDate(){
        return new Date();
    }

如图

下载附件

List集合转json

        Student student = new Student();
        student.setId(1);
        student.setName("八点博客");
        student.setAge(10);
        student.setEmail("badianboke@163.com");
        student.setBirthday(getDate());


        Student student2 = new Student();
        student2.setId(2);
        student2.setName("八点博客2");
        student2.setAge(10);
        student2.setEmail("badianboke@qq.com");
        student2.setBirthday(getDate());


        List<Student> list = new ArrayList<>();
        list.add(student);
        list.add(student2);

        String res = JSON.toJSONString(list);
        System.out.println(res);

如图

下载附件

Map集合转json

        Student student = new Student();
        student.setId(1);
        student.setName("八点博客");
        student.setAge(10);
        student.setEmail("badianboke@163.com");
        student.setBirthday(getDate());


        Student student2 = new Student();
        student2.setId(2);
        student2.setName("八点博客2");
        student2.setAge(10);
        student2.setEmail("badianboke@qq.com");
        student2.setBirthday(getDate());


        Map<String, Student> map = new HashMap();
        map.put("student1", student);
        map.put("student2", student2);

        String res = JSON.toJSONString(list);
        System.out.println(res);

如图

下载附件

JSON字符串转对象

    public void testJson2Obj(){
        String string = "{\"age\":10,\"birthday\":1670984338994,\"email\":\"badianboke@qq.com\",\"id\":2,\"name\":\"八点博客2\"}";
        Student student = JSON.parseObject(string, Student.class);
        System.out.println(student);
    }

JSON字符串转List集合

    public void testJson2List(){
        String string = "[{\"age\":10,\"birthday\":1670984670117,\"email\":\"badianboke@qq.com\",\"id\":2,\"name\":\"八点博客2\"},{\"age\":10,\"birthday\":1670984670117,\"email\":\"badianboke@163.com\",\"id\":1,\"name\":\"八点博客\"}]";
        List list = JSON.parseArray(string, Student.class);
        System.out.println(list);
    }

JSON字符串转Map集合

    public void testJson2Map(){
        String string = "{\"student2\":{\"age\":10,\"birthday\":1670984842339,\"email\":\"badianboke@qq.com\",\"id\":2,\"name\":\"八点博客2\"},\"student1\":{\"age\":10,\"birthday\":1670984842339,\"email\":\"badianboke@163.com\",\"id\":1,\"name\":\"八点博客\"}}";
        Map<String, Student> map = JSON.parseObject(string, new TypeReference<Map<String, Student>>(){});
        for (String key : map.keySet()){
            System.out.println(map.get(key));
        }
    }

3 枚举

    public void testEnum(){
        Student student = new Student();
        student.setId(1);
        student.setName("八点博客");
        //student.setAge(10);
       // student.setEmail("badianboke@163.com");
        student.setBirthday(getDate());


        String res = JSON.toJSONString(student,
                SerializerFeature.WriteNullStringAsEmpty,
                SerializerFeature.WriteNullNumberAsZero,
                SerializerFeature.WriteNullBooleanAsFalse,
                SerializerFeature.WriteDateUseDateFormat,
                SerializerFeature.PrettyFormat);
        System.out.println(res);
    }

如图

下载附件

4 JSONField注解

public class Student {
    private Integer id;

    @JSONField(name = "s_name", ordinal = 1)
    private String name;

    @JSONField(name = "s_age", ordinal = 2)
    private Integer age;

    @JSONField(serialize = false, deserialize = false)
    private String email;

    @JSONField(format = "YYYY/MM/dd")
    private Date birthday;

    private boolean flag;
}

如图

下载附件

4 JSONType注解

@JSONType(includes = {"id", "name"}, orders = {"name", "age"})
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private String email;
    private Date birthday;
    private boolean flag;
}