fastjson和Jackson的简单使用,序列化和反序列化!MQ中常用!

DBC 1.8K 0

fastjson

温馨提示

为什么需要这个两个呢,这里最常见的就是MQ之间的发送和接受,我们发送一般是序列化之后的字符串过去,然后再反序列化成为一个对象为我们使用。这里博主做一个笔记记录下来!
以下来自 https://www.runoob.com/w3cnote/fastjson-intro.html

Fastjson 简介

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,当然它也可以将 JSON 字符串转换为 Java 对象。

Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。

Fastjson 源码地址:https://github.com/alibaba/fastjson

Fastjson 中文 Wiki:https://github.com/alibaba/fastjson/wiki/Quick-Start-CN


Fastjson 特性

  • 提供服务器端、安卓客户端两种解析工具,性能表现较好。
  • 提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。
  • 允许转换预先存在的无法修改的对象(只有class、无源代码)。
  • Java泛型的广泛支持。
  • 允许对象的自定义表示、允许自定义序列化类。
  • 支持任意复杂对象(具有深厚的继承层次和广泛使用的泛型类型)。

fastjson和Jackson的简单使用,序列化和反序列化!MQ中常用!插图

具体使用

首先我们需要导入包

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.75</version>
        </dependency>

将对象转换为字符串关键代码

        KnowledgeDO knowledgeDO = new KnowledgeDO();
        knowledgeDO.setId(1);
        knowledgeDO.setAuthor("小猪");
        knowledgeDO.setContent("你不是人!");
        String jsonOutput= JSON.toJSONString(knowledgeDO);
        System.out.println(jsonOutput);

将字符串转换为对象关键代码

        KnowledgeDO knowledgeDO1 = JSON.parseObject(jsonOutput, KnowledgeDO.class);
        System.out.println(knowledgeDO1.getContent());

控制台输出结果

fastjson和Jackson的简单使用,序列化和反序列化!MQ中常用!插图2

温馨提示

无论你是简单的对象,还是复杂的list对象集合,都一样是调用这个方法 JSON.parseObject(jsonOutput, KnowledgeDO.class);

大功告成


Jackson

具体使用

首先我们需要导入包

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.1</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
温馨提示

两个看着用哈!

将对象转换为字符串关键代码

        KnowledgeDO knowledgeDO = new KnowledgeDO();
        knowledgeDO.setId(1);
        knowledgeDO.setAuthor("小猪");
        knowledgeDO.setContent("你不是人!");
        ObjectMapper mapper = new ObjectMapper();
        String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(knowledgeDO);
        System.out.println(jsonString);

将字符串转换为对象关键代码

        KnowledgeDO knowledgeDO1 = mapper.readValue(jsonString, KnowledgeDO.class);
        System.out.println(knowledgeDO1.getContent());

控制台输出结果

fastjson和Jackson的简单使用,序列化和反序列化!MQ中常用!插图4

温馨提示

无论你是简单的对象,还是复杂的list对象集合,都一样是调用这个方法 String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(knowledgeDO);

大功告成

温馨提示

这里说一句题外话,似乎fastjson没有Jackson那么强大,听说大佬都是使用的Jackson,博主也没有深入去了解,不过一般来说我们简单的使用应该不会遇到bug的,后面复杂了,相信我们的视野上去了,会更好的做选择! [aru_31]

发表评论 取消回复
表情 图片 链接 代码

分享