Springboot -- JSON

Spring Boot提供了与三个JSON库的集成。

  • Gson
  • Jackson
  • JSON-B

Jackson时首选和默认的库 。

1.Jackson

Jackson是自动配置,它是spring-boot-starter-json的一部分。当Jackson在classpath上时,会自动配置ObjectMapper bean,你也可以通过一些配置属性来定制ObjectMapper。

1.1自定义Serializers和Deserializers

如果你使用Jackson来序列化和反序列化JSON数据,你可能想编写自己的JsonSerializer和JsonDeserializer类。自定义序列化器通常是通过模块向Jackson注册的,但Spring Boot提供了一个替代性@JsonComponent注解,使直接注册Spring Bean变得更加容易。

你可以在JsonSerializer,JsonDeserializer或KeyDeserializer得实现上使用@JsonComponent注解。你也可以在包含serializers/deserializers作为内部类得类上使用它。

java 复制代码
@JsonComponent
public class MyJsonComponent {

    public static class Serializer extends JsonSerializer<MyObject> {

        @Override
        public void serialize(MyObject value, JsonGenerator jgen, SerializerProvider serializers) throws IOException {
            jgen.writeStartObject();
            jgen.writeStringField("name", value.getName());
            jgen.writeNumberField("age", value.getAge());
            jgen.writeEndObject();
        }

    }

    public static class Deserializer extends JsonDeserializer<MyObject> {

        @Override
        public MyObject deserialize(JsonParser jsonParser, DeserializationContext ctxt) throws IOException {
            ObjectCodec codec = jsonParser.getCodec();
            JsonNode tree = codec.readTree(jsonParser);
            String name = tree.get("name").textValue();
            int age = tree.get("age").intValue();
            return new MyObject(name, age);
        }

    }
}

Application中的所有@JsonComponent Bean都会自动注册Jackson。因为@JsonComponent是@Component元注解的,所以通常的组件扫描规则适用。

2. Gson

为Gson提供了自动配置。当Gson在classpath上时,会自动配置一个Gson Bean。提供了几个spring.gson.*配置属性来定制配置。需要进一步设置,可以适用一个或多个GsonBuilderCustomizer bean

3. JSON-B

为JSON-B提供了自动配置功能,当JSON-B API和一个实现在classpath上时,一个Jsonb Bean将被自动配置。首选的JSON-B实现是Eclipse。

相关推荐
爬山算法11 小时前
Hibernate(67)如何在云环境中使用Hibernate?
java·后端·hibernate
女王大人万岁12 小时前
Go标准库 io与os库详解
服务器·开发语言·后端·golang
露天赏雪12 小时前
Java 高并发编程实战:从线程池到分布式锁,解决生产环境并发问题
java·开发语言·spring boot·分布式·后端·mysql
短剑重铸之日13 小时前
《SpringCloud实用版》 Seata 分布式事务实战:AT / TCC / Saga /XA
后端·spring·spring cloud·seata·分布式事务
iRuriCatt13 小时前
智慧景区管理系统 | 计算机毕设项目
java·前端·spring boot·vue·毕设
FAFU_kyp13 小时前
RISC0_ZERO项目在macOs上生成链上证明避坑
开发语言·后端·学习·macos·rust
qq_124987075313 小时前
基于springboot的会议室预订系统设计与实现(源码+论文+部署+安装)
java·vue.js·spring boot·后端·信息可视化·毕业设计·计算机毕业设计
女王大人万岁14 小时前
Go语言time库核心用法与实战避坑
服务器·开发语言·后端·golang
J_liaty14 小时前
Spring Boot + MinIO 文件上传工具类
java·spring boot·后端·minio
短剑重铸之日14 小时前
《SpringCloud实用版》Stream + RocketMQ 实现可靠消息 & 事务消息
后端·rocketmq·springcloud·消息中间件·事务消息