1. 程式人生 > >【每天填坑一點點】(一)---為app寫介面 儘量不返回給前端null 解決方法

【每天填坑一點點】(一)---為app寫介面 儘量不返回給前端null 解決方法

今天前端說,返回給前端太多的null,會導致app閃退。

找的解決方案,作如下配置:我們專案用的是spring-boot。

第一種:當返回前端null的時候,便不再返回該欄位

(1)在bean上面加註解

import com.fasterxml.jackson.annotation.JsonInclude;
@JsonInclude(JsonInclude.Include.NON_NULL)

(2)在配置檔案中加註解

spring:
    jackson:
        default-property-inclusion: non_null

第二種:當需要返回null的時候,返回“”

package com.dingyi.configuration;

import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.alibaba.fastjson.serializer.ValueFilter;
import com.alibaba.fastjson.support.config.FastJsonConfig;
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;

import java.math.BigInteger;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;

/**
 * fastjson配置類
 *
 * @author fengshuonan
 * @date 2017-05-23 22:56
 */
@Configuration("defaultFastjsonConfig")
@ConditionalOnClass(com.alibaba.fastjson.JSON.class)
@ConditionalOnMissingBean(FastJsonHttpMessageConverter.class)
@ConditionalOnWebApplication
public class DefaultFastjsonConfig {

    @Bean
    public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() {
        FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
        converter.setFastJsonConfig(fastjsonConfig());
        converter.setSupportedMediaTypes(getSupportedMediaType());
        return converter;
    }

    /**
     * fastjson的配置
     */
    private FastJsonConfig fastjsonConfig() {
        FastJsonConfig fastJsonConfig = new FastJsonConfig();
        fastJsonConfig.setSerializerFeatures(
                SerializerFeature.DisableCircularReferenceDetect,
                SerializerFeature.PrettyFormat,
                SerializerFeature.WriteNullListAsEmpty,
                SerializerFeature.WriteNullStringAsEmpty,
                SerializerFeature.WriteMapNullValue,
                SerializerFeature.WriteNullBooleanAsFalse,
                SerializerFeature.WriteEnumUsingToString
        );
        fastJsonConfig.setDateFormat("yyyy-MM-dd HH:mm:ss");
        ValueFilter valueFilter = (o, s, o1) -> {
            if (null == o1) {
                o1 = "";
            }
            return o1;
        };

        fastJsonConfig.setCharset(Charset.forName("utf-8"));
        fastJsonConfig.setSerializeFilters(valueFilter);

        //解決Long轉json精度丟失的問題
        SerializeConfig serializeConfig = SerializeConfig.globalInstance;
        serializeConfig.put(BigInteger.class, ToStringSerializer.instance);
        serializeConfig.put(Long.class, ToStringSerializer.instance);
        serializeConfig.put(Long.TYPE, ToStringSerializer.instance);
        fastJsonConfig.setSerializeConfig(serializeConfig);
        return fastJsonConfig;
    }

    /**
     * 支援的mediaType型別
     */
    private List<MediaType> getSupportedMediaType() {
        ArrayList<MediaType> mediaTypes = new ArrayList<>();
        mediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
        return mediaTypes;
    }
}

相關推薦

每天點點()---app介面 儘量返回前端null 解決方法

今天前端說,返回給前端太多的null,會導致app閃退。找的解決方案,作如下配置:我們專案用的是spring-boot。第一種:當返回前端null的時候,便不再返回該欄位(1)在bean上面加註解import com.fasterxml.jackson.annotation.

每天積累點點Humans of New York

“I got divorced when I was sixty-four. We had a good run. We were married for 36 years. We’re not enemies.We just outgrew each other. When the kids

每天積累點點BottomNavigationView使用教程

一:基本用法 1:在res/menu目錄下定義選單佈局: <?xml version="1.0"encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/andr

每天積累點點Data Binding Library官方教程翻譯

Data Binding Library This document explains how to use the Data Binding Library to writedeclarative layouts and minimize the glue code necessary to

每天積累點點將PopupWindow顯示在指定位置

//以想在控制元件tvMl的右下角顯示PopupWindow為例(popupWindow的右上角在tvMl的右下角) View popPhotoView = LayoutInflater.from(this).inflate(R.layout.popup_ml_choos

每天進步點點存放平時遇到的問題資料,有需要的儘管拿走。

資料宣告: 部分文章為尋找問題時在網上轉載,在此部落格中做個記錄,方便自己也方便有類似問題的朋友。部分出處已經標明,沒未指明出處文章如有侵權,請發郵件或DM表明文章和原出處地址,我一定在文章中註明。謝謝。

cocos2d-js官方文檔、搭建 Cocos2d-JS 開發環境

tin oca ins index com 前沿 雙擊 指定 轉載 在本文中,我將展示如何在 Mac os 10.9(Maverics) 上搭建 Cocos2d-JS 開發環境。 下載必備的軟件包 下載並安裝WebStorm7。WebStorm7目前的穩定版本是7.0.

BZOJ5248九省聯考2018雙木棋(搜索,哈希)

count const 一個 body 如果 直接 一個人 沒有 span 【BZOJ5248】【九省聯考2018】一雙木棋(搜索,哈希) 題面 BZOJ Description 菲菲和牛牛在一塊n行m列的棋盤上下棋,菲菲執黑棋先手,牛牛執白棋後手。棋局開始時,棋盤上沒有任

牛客網刷題次難忘的編程教訓

最小 應該 結果 uid == break 怎麽辦 切分 sum 昨天刷這樣一道編程題: --------------------------------------------------------------------------------------------

牛客網刷題次難忘的程式設計教訓

昨天刷這樣一道程式設計題: -------------------------------------------------------------------------------------------------- 求連續子陣列的最大和。 一個非空整數陣列,選擇其中的兩個位置,使得兩個位置

機器學習經典演算法梳理.線性迴歸

【機器學習經典演算法梳理】是一個專門梳理幾大經典機器學習演算法的部落格。我在這個系列部落格中,爭取用最簡練的語言、較簡潔的數學公式,和清晰成體系的提綱,來盡我所能,對於演算法進行詳盡的梳理。【機器學習經典演算法梳理】系列部落格對於機器學習演算法的梳理,將從“基本思想”、“基本形式”、“過程推導”、“

GPU精粹與Shader程式設計() 開篇 & 全系列11本書核心知識點總覽

系列文章前言 《GPU Gems》1~3 、《GPU Pro》1~7 以及《GEM Zen》組成的GPU精粹系列書籍,是遊戲開發、計算機圖形學和渲染領域的業界大牛們優秀經驗的分享合輯彙編,是江湖各大武林門派絕學經典招式的精華薈萃,可謂遊戲開發、圖形學和渲染領

本人禿頂程式設計師次FastDFS併發問題的排查經歷

←←←←←←←←←←←← 我都禿頂了,還不點關注! 前一段時間,業務部門同事反饋在一次生產伺服器升級之後,POS消費上傳小票業務偶現異常,上傳小票業務有重試機制,有些重試三次也不會成功,他們排查了一下沒有找到原因,希望架構部幫忙解決。 公司使用的是FastDFS來做的圖片伺服器,生產

BZOJ5248九省聯考2018雙木棋(搜尋,雜湊)

題面 BZOJ Description 菲菲和牛牛在一塊n行m列的棋盤上下棋,菲菲執黑棋先手,牛牛執白棋後手。棋局開始時,棋盤上沒有任何棋子, 兩人輪流在格子上落子,直到填滿棋盤時結束。落子的規則是:一個格子可以落子當且僅當這個格子內沒有棋子且 這

cocos2d-js官方文件、搭建 Cocos2d-JS 開發環境

在本文中,我將展示如何在 Mac os 10.9(Maverics) 上搭建 Cocos2d-JS 開發環境。 下載必備的軟體包 下載並安裝WebStorm7。WebStorm7目前的穩定版本是7.0.3。為什麼我們選擇WebStorm?因為它提供了許多功能,如Jav

微信小遊戲之路(

1、註冊微信小程式賬號 http://mp.weixin.qq.com 2、下載開發工具 3、新建專案,選擇小程式 4、選好目錄、填寫專案名稱、可選是否建立demo或是空專案啟動 5、若不選擇“建立普通快速啟動模板”會提示如下 在目錄下新建game.jsongame.

微信小程式之路():text空格符號以及省略號

1、text的空格符 首先需要設定<text> 控制元件的decode值 decode可以解析的有&nbsp; &lt; &gt; &amp; &

Git、GitHub、GitLab Git安裝與Git最小配置

Git學習開始,雖然只是工具。 文章目錄 1 Git安裝 2 檢查Git安裝版本 3 Git的最小配置 4 git config的其它作用域 5 總結

Python資料探勘課程.安裝Python及爬蟲入門介紹

        最近因為需要給大資料金融學院的學生講解《Python資料探勘及大資料分析》的課程,所以在這裡,我將結合自己的上課內容,詳細講解每個步驟。作為助教,我更希望這門課程以實戰為主,同時按小組劃分學生,每個小組最後都提交一個基於Python的資料探勘及大資料分析相關

安卓-自定義佈局安卓App開發思路 步一個腳印(十)實現內嵌在app中的webview 騰訊開源X5 高效安全

實現內嵌在app中的webview 採用騰訊開源X5 高效安全 webview在app的使用中,十分頻繁,原生的webview載入速度相對來說很慢,而且很費流量。騰訊開源了x5的webview