最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

springboot jackson配置教程

 更新時(shí)間:2021年10月11日 14:47:31   作者:知我飯否  
這篇文章主要介紹了springboot jackson配置教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springboot jackson配置

項(xiàng)目中使用的json是jackson。這個(gè)呢是spring boot自帶的,一開(kāi)始是用阿里的fastjson的。但是 總是有漏洞。還是用jackson,谷歌的gson也感覺(jué)非常棒。

需求

在controller 使用@RestController 返回json。使用的是 jackson。在處理BigDecimal的時(shí)候,想去掉 小數(shù)點(diǎn)后面的 00,例如 280.00.

全局配置

這種需求 肯定是全局配置一下了??戳艘幌挛臋n,配置一下,感覺(jué)還可以 寫一下吧。

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.json.JsonReadFeature;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import java.io.IOException;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
 * @Author: plani
 * 創(chuàng)建時(shí)間: 2020/9/22 9:41
 */
@Configuration
public class JacksonConfig {
    @Bean
    @Primary
    @ConditionalOnMissingBean(ObjectMapper.class)
    public ObjectMapper jacksonObjectMapper()
    {
        JsonMapper.Builder builder = JsonMapper.builder();
        // 通過(guò)該方法對(duì)mapper對(duì)象進(jìn)行設(shè)置,所有序列化的對(duì)象都將按改規(guī)則進(jìn)行系列化
        // Include.Include.ALWAYS 默認(rèn)
        // Include.NON_DEFAULT 屬性為默認(rèn)值不序列化
        // Include.NON_EMPTY 屬性為 空("") 或者為 NULL 都不序列化,則返回的json是沒(méi)有這個(gè)字段的。這樣對(duì)移動(dòng)端會(huì)更省流量
        // Include.NON_NULL 屬性為NULL 不序列化
        builder.serializationInclusion(JsonInclude.Include.NON_EMPTY);
        //有未知屬性 要不要拋異常
        builder.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        //是否允許JSON字符串包含未轉(zhuǎn)義的控制字符(值小于32的ASCII字符,包括制表符和換行符)的特性。如果feature設(shè)置為false,則在遇到這樣的字符時(shí)拋出異常。
        builder.configure(JsonReadFeature.ALLOW_UNESCAPED_CONTROL_CHARS, true);
        //確定解析器是否允許使用單引號(hào)(撇號(hào),字符'\ ")引用字符串(名稱和字符串值)的特性。如果是,這是除了其他可接受的標(biāo)記。但不是JSON規(guī)范)。
        builder.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true);
        JsonMapper jsonMapper = builder.build();
        JavaTimeModule javaTimeModule = new JavaTimeModule();
        //添加 序列器  這里是對(duì) BigDecimal 類型處理,這是關(guān)鍵代碼
        javaTimeModule.addSerializer(BigDecimal.class, new JsonSerializer<BigDecimal>() {
            @Override
            public void serialize(BigDecimal value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
                DecimalFormat fnum = new DecimalFormat("#.##");
                //把 這個(gè)BigDecimal 屬性對(duì)應(yīng)的值,寫成 String 類型
                gen.writeString(fnum.format(value));
            }
        });
        //處理 時(shí)間格式
        javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
        //注冊(cè)
        jsonMapper.registerModule(javaTimeModule);
        return jsonMapper;
    }
}

上面最重要的 就是 addSerializer 這個(gè)方法,用來(lái)處理對(duì)應(yīng)類型的 轉(zhuǎn)化。注釋的很清楚,看不懂的可以留言問(wèn)我。

額外

網(wǎng)上有好多上面是ObjectMapper 這個(gè)進(jìn)行設(shè)置,這個(gè)呢里面有不少是 標(biāo)記過(guò)時(shí)的。 所以 我用了JsonMapper

測(cè)試

寫一個(gè) controller 方法,返回含有BigDecimal的類,來(lái)測(cè)試一下

   @PostMapping("test")
    public Map test() {
        Map<String, Object> map = new HashMap<>();
        BigDecimal bigDecimal = new BigDecimal("280.00");
        map.put("one", bigDecimal);
        return map;
    }

用postman測(cè)試一下

在這里插入圖片描述

可以看見(jiàn) 280.00 被轉(zhuǎn)成了 280。 好了,研究我的深度學(xué)習(xí)去了

springboot配置jackSon處理字段

常用框架:阿里,fastjson,谷歌,gson等。

javaBean序列化為json

① 性能:Jackson > Fastjson > Gson > Json-lib同個(gè)結(jié)構(gòu)

② Jackson、Fastjson、Gson 類庫(kù)各有特點(diǎn),各有自己的專長(zhǎng)

③ 空間換時(shí)間,時(shí)間換空間

jackson處理相關(guān)自動(dòng)

① 指定字段不返回:@jsonIgnore(主要用于密碼,讓密碼不顯示,加在字段上面)

② 指定日期格式:@JsonFormat(pattern = “yyyy-MM-dd hh:mm:ss”,locale = “zh”,timezone = “GMT+8”)

③ 空字段不返回:@JsonInclude(JsonInclude.Include.NON_NULL)

③ 指定別名:@JsonProperty(“create_time”)

開(kāi)發(fā)功能:視頻創(chuàng)建時(shí)候返回自定義格式,過(guò)濾用戶敏感信息。

 private int price;
    @JsonProperty("cover_img")
    private String coverImg;
    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",locale = "zh",timezone = "GMT+8")
    @JsonProperty("create_time")
    private Date createTime;
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<Chapter> chapterList;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文教你學(xué)會(huì)搭建SpringBoot分布式項(xiàng)目

    一文教你學(xué)會(huì)搭建SpringBoot分布式項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了搭建SpringBoot分布式項(xiàng)目的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • java8中parallelStream性能測(cè)試及結(jié)果分析

    java8中parallelStream性能測(cè)試及結(jié)果分析

    本篇文章給大家用代碼實(shí)例做了segmentfaultjava8中parallelStream性能測(cè)試,并對(duì)測(cè)試結(jié)果做了說(shuō)明,需要的朋友學(xué)習(xí)下吧。
    2018-01-01
  • SpringBoot中的掃描注解使用詳解

    SpringBoot中的掃描注解使用詳解

    為了使Spring Boot應(yīng)用程序能夠掃描并識(shí)別特定或自定義注解,通常的做法是在創(chuàng)建這些注解之后,在配置類中通過(guò)@ComponentScan指定基礎(chǔ)包路徑,并設(shè)置過(guò)濾條件來(lái)包含所需的注解,本文給大家介紹了Spring Boot中的掃描注解如何使用,需要的朋友可以參考下
    2025-01-01
  • Java中接口Set的特點(diǎn)及方法說(shuō)明

    Java中接口Set的特點(diǎn)及方法說(shuō)明

    這篇文章主要介紹了Java中接口Set的特點(diǎn)及方法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件

    Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件

    這篇文章主要介紹了Java 如何將網(wǎng)絡(luò)資源url轉(zhuǎn)化為File文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決

    IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決

    最近剛開(kāi)始學(xué)習(xí)maven,正準(zhǔn)備使用idea創(chuàng)建一個(gè)maven項(xiàng)目練手,卻發(fā)現(xiàn)自己創(chuàng)建的maven項(xiàng)目始終沒(méi)有src目錄,下面這篇文章主要給大家介紹了關(guān)于IDEA創(chuàng)建Maven項(xiàng)目后報(bào)錯(cuò)不出現(xiàn)src文件夾的情況解決,需要的朋友可以參考下
    2023-05-05
  • Spring接口版本控制方案及RequestMappingHandlerMapping接口介紹(最新推薦)

    Spring接口版本控制方案及RequestMappingHandlerMapping接口介紹(最新推薦)

    RequestMappingHandlerMapping接口是Spring MVC中的一個(gè)核心組件,負(fù)責(zé)處理請(qǐng)求映射和處理器的匹配這篇文章主要介紹了Spring接口版本控制方案及RequestMappingHandlerMapping接口介紹,需要的朋友可以參考下
    2024-07-07
  • Java中的?HTTP?協(xié)議原理詳解

    Java中的?HTTP?協(xié)議原理詳解

    這篇文章主要介紹了Java中的?HTTP?協(xié)議原理詳解,HTTP超文本傳輸協(xié)議,下文簡(jiǎn)稱?HTTP,它的作用是用于實(shí)現(xiàn)服務(wù)器端和客戶端的數(shù)據(jù)傳輸?shù)?/div> 2022-07-07
  • Mybatis resultType返回結(jié)果為null的問(wèn)題排查方式

    Mybatis resultType返回結(jié)果為null的問(wèn)題排查方式

    這篇文章主要介紹了Mybatis resultType返回結(jié)果為null的問(wèn)題排查方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java Swing 多線程加載圖片(保證順序一致)

    Java Swing 多線程加載圖片(保證順序一致)

    這篇文章主要為大家詳細(xì)介紹了Java Swing 多線程加載圖片,保證順序一致,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12

最新評(píng)論

兰考县| 临城县| 岐山县| 兴山县| 长宁区| 青海省| 靖州| 潼南县| 邵东县| 石狮市| 娄烦县| 四会市| 高雄县| 利津县| 奉节县| 于田县| 沅江市| 许昌市| 二手房| 潜山县| 天全县| 芷江| 五原县| 华亭县| 东阳市| 渝北区| 阿尔山市| 上思县| 都江堰市| 济宁市| 洪湖市| 靖安县| 扎囊县| 永昌县| 汝阳县| 嘉义县| 雷州市| 准格尔旗| 肃宁县| 南川市| 伽师县|