Springboot使用HuTool的JSON導致序列化問題的解決方法


報錯信息

  No serializer found for class cn.hutool.json.JSONNull and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS)

原因分析

  Jackson是內置的一個解析JSON和XML的框架。如果SpringBoot項目中Rest接口返回值定義為自定義對象,則會使用Jackson的序列化工具將對象序列化為JSON再返回。

  HuTool的JSON里用JSONNull對象代替了null,而且JSONNull類沒有適用於Jackson序列化的序列化器。

  如果接口返回值對象里使用了HuTool的JSON,又湊巧存在被JSONNull對象代替了的null值,則序列化時會出現以上報錯。

解決方法

方法1.自定義序列化器

import cn.hutool.json.JSONNull;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.springframework.boot.jackson.JsonComponent;

import java.io.IOException;

@JsonComponent
public class JsonNullSerializer extends JsonSerializer<JSONNull> {
    @Override
    public void serialize(JSONNull jsonNull, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeNull();
    }
}

方法2.更改JSON工具

  這個是最簡單粗暴的方法,使用統一的JSON工具最不容易出現問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM