fastjson2 json.tojsonstring 會自動忽略過濾掉 key: null的數據

如果你想在序列化時保留值為 null 的字段,只要打開 Fastjson2 的 WriteNulls 特性即可。常見做法有兩種——按調用級別開啟,或全局開啟。


1. 在每次序列化時加 WriteNulls

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONWriter;public class Demo {public static void main(String[] args) {MyBean bean = new MyBean();bean.setName("張三");bean.setAge(null);// 加上 WriteNulls,會輸出 "age":nullString json = JSON.toJSONString(bean,// 輸出 null 字段JSONWriter.Feature.WriteNulls,// 可選:還可以用其他特性一起,如格式化JSONWriter.Feature.PrettyFormat);System.out.println(json);}
}

輸出示例:

{"name": "張三","age": null
}

2. 全局開啟 WriteNulls

如果你想讓項目里所有 toJSONString(...) 都默認帶上 null 字段,可以在程序啟動(或某個 static 塊)里統一配置:

import com.alibaba.fastjson2.JSONFactory;
import com.alibaba.fastjson2.JSONWriter;public class Fastjson2Config {static {long features = JSONFactory.getDefaultWriterFeatures();// 把 WriteNulls 這個位打開features |= JSONWriter.Feature.WriteNulls.mask;JSONFactory.getDefaultWriterFeatures(features);}
}

這樣,無論后續代碼里有沒有在 JSON.toJSONString 里顯式傳入 WriteNulls,都默認會把所有 null 值字段輸出成 "field":null


3. 針對集合/特定類型的 null 值輸出

如果你還希望對集合、布爾、數字等類型的 null 值有更細粒度的控制,Fastjson2 也提供了其他特性,比如:

  • WriteNullListAsEmpty —— 把 List<?> list = null 輸出成 "list":[]

  • WriteNullStringAsEmpty —— 把 String s = null 輸出成 "s":""

  • WriteNullNumberAsZero —— 把 Number n = null 輸出成 "n":0

  • WriteNullBooleanAsFalse —— 把 Boolean b = null 輸出成 "b":false

用法同上,只要把對應的 Feature 一起加到 toJSONString 或全局配置里即可。


小結

  • 保留 null → 打開 JSONWriter.Feature.WriteNulls

  • 忽略 null → 打開 JSONWriter.Feature.SkipNulls(或者全局去掉 WriteNulls)。

  • 其他細粒度需求可組合使用其它 WriteNull* 特性。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79900.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79900.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79900.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

LeetCode熱題100--54.螺旋矩陣--中等

1. 題目 給你一個 m 行 n 列的矩陣 matrix &#xff0c;請按照 順時針螺旋順序 &#xff0c;返回矩陣中的所有元素。 示例 1&#xff1a; 輸入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 輸出&#xff1a;[1,2,3,6,9,8,7,4,5] 示例 2&#xff1a; 輸入&#xff1a;ma…

別卷手柄了!跨平臺VR遙操系統實現仿真

我們構建了一個基于 Quest 3 的 VR 遙操系統&#xff0c;該系統能夠同時支持 DISCOVERSE 仿真環境與 MMK2 真機的操控&#xff0c;實現了從虛擬環境到真實機器人系統的無縫對接。 ? 基于 VR 實現的遙操系統具有良好的擴展性和便攜性&#xff0c;為多場景應用提供了靈活的操作方…

Linux復習筆記(一)基礎命令和操作

遇到的問題&#xff0c;都有解決方案&#xff0c;希望我的博客能為你提供一點幫助。 一、Linux中的基礎命令和操作&#xff08;約30%-40%) 1.用戶和組&#xff08;5%左右&#xff09; 1.1用戶簡介&#xff08;了解&#xff09; 要求&#xff1a;了解&#xff0c;知道有三個用戶…

【C語言干貨】野指針

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、什么是野指針&#xff1f;二、野指針的三大成因 1.指針未初始化2.指針越界訪問2.指針指向已釋放的內存 前言 提示&#xff1a;以下是本篇文章正文內容&…

Unity:Surface Effector 2D(表面效應器 2D)

目錄 什么是表面效應器 2D&#xff1f; &#x1f3af; 它是做什么的&#xff1f; &#x1f9ea; 從第一性原理解釋它是怎么工作的 &#x1f4e6; 重要參數解釋 為什么不直接用 Rigidbody&#xff08;剛體&#xff09;來控制運動 &#xff1f; 所以什么時候該用哪個&#…

android 記錄應用內存

windows cmd下 30s 記錄一次 echo off setlocal enabledelayedexpansion set /a counter0 :loop echo %date% %time% >> meminfo.txt adb shell dumpsys meminfo packagename>> meminfo.txt timeout /t 30 /nobreak >nul set /a counter1 echo counter: !coun…

基于神經網絡的 YOLOv8、MobileNet、HigherHRNet 姿態檢測比較研究

摘要 隨著人工智能技術的飛速發展&#xff0c;基于神經網絡的姿態檢測技術在計算機視覺領域取得了顯著進展。本文旨在深入比較分析當前主流的姿態檢測模型&#xff0c;即 YOLOv8、MobileNet 和 HigherHRNet&#xff0c;從模型架構、性能表現、應用場景等多維度展開研究。通過詳…

解決HomeAssistant 無法安裝 samba share問題

最近家里樹莓派上的homeassistant 被折騰崩了&#xff0c;重新安裝過程中發現加載項“Official add-ons”里面的“samba share”、“file edit”、“Mosquitto broker”等常用組件都不能安裝。報以下錯誤&#xff1a; [supervisor.docker.interface] Cant install homeassista…

[Linux]從零開始的STM32MP157 Buildroot根文件系統構建

一、前言 在前面的教程中&#xff0c;教了大家如何移植一個LInux的內核并且正確啟動&#xff0c;我們發現Linux內核在啟動后會出現一個錯誤&#xff0c;提示我們沒有找到根文件系統。那么什么是根文件系統呢&#xff1f;之前我們使用Ubuntu編譯了STM32MP157的TF-A,UBOOT,LINUX內…

2025-05-07 學習記錄--Python-變量 + 常量 + 命名規則 + 變量的數據類型 + 數據類型

合抱之木&#xff0c;生于毫末&#xff1b;九層之臺&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、變量 ?? 多個變量的賦值 &#x1f36d; 二、常量 ?? 程序在運行的過程中&#xff0c;值永遠不會發生改變的量稱之為常量…

16.狀態模式:思考與解讀

原文地址:狀態模式&#xff1a;思考與解讀 更多內容請關注&#xff1a;深入思考與解讀設計模式 引言 在開發軟件系統時&#xff0c;特別是當對象的行為會隨著狀態的變化而變化時&#xff0c;系統往往會變得復雜。你是否遇到過這樣的情況&#xff1a;一個對象的行為在不同的狀…

從 Pretrain 到 Fine-tuning:大模型遷移學習的核心原理剖析

引言 在人工智能領域&#xff0c;大模型的出現掀起了一場技術革命。這些擁有海量參數的模型&#xff0c;如 GPT-4、PaLM 等&#xff0c;在眾多任務上展現出了驚人的能力。然而&#xff0c;訓練一個大模型需要耗費巨大的計算資源和時間&#xff0c;而且直接讓大模型處理特定領域…

Java詳解LeetCode 熱題 100(11):LeetCode 239. 滑動窗口最大值(Sliding Window Maximum)詳解

文章目錄 1. 題目描述2. 理解題目3. 解法一&#xff1a;暴力法3.1 思路3.2 Java代碼實現3.3 代碼詳解3.4 復雜度分析3.5 適用場景 4. 解法二&#xff1a;優先隊列&#xff08;最大堆&#xff09;4.1 思路4.2 Java代碼實現4.3 代碼詳解4.4 復雜度分析4.5 適用場景 5. 解法三&…

org.apache.poi——將 office的各種類型文件(word等文件類型)轉為 pdf

org.apache.poi——將 office的各種類型文件&#xff08;word等文件類型&#xff09;轉為 pdf 簡介使用方法word轉pdf 使用示例word轉pdf 簡介 使用方法 word轉pdf Maven坐標為 <dependency><groupId>com.documents4j</groupId><artifactId>documen…

二叉樹與優先級隊列

1.樹 樹是由n個數據構成的非線性結構&#xff0c;它是根朝上&#xff0c;葉朝下。 注意&#xff1a;樹形結構之中&#xff0c;子樹之間不能連接&#xff0c;不然就不構成樹形結構 1.子樹之間沒有交集 2.除了根節點以外&#xff0c;每一個節點有且只有一個父親節點 3.一個n個…

如何進行室內VR全景拍攝?

如何進行室內VR全景拍攝&#xff1f; 室內VR全景拍攝作為先進的視覺技術&#xff0c;能夠為用戶提供沉浸式的空間體驗。本文介紹如何進行室內VR全景拍攝&#xff0c;并闡述眾趣科技在這一領域的技術支持和服務優勢。 室內VR全景拍攝基礎 1. 室內VR全景拍攝概述 室內VR全景拍…

如何通過代理 IP 實現異地直播推流

在直播行業日益火爆的今天&#xff0c;許多主播希望突破地域限制&#xff0c;實現異地直播推流&#xff0c;以獲得更廣泛的觀眾群體和更好的直播效果。代理 IP 作為一種有效的網絡工具&#xff0c;能夠幫助主播輕松達成這一目標。本文將詳細介紹如何通過代理 IP 實現異地直播推…

隨機變量數字特征

主要介紹一維隨機變量期望和方差、二維隨機變量期望和方差、以及協方差相關公式&#xff0c;及推導。 一維隨機變量 以一個拋硬幣的場景作為例子&#xff0c;如下&#xff1a; 拋擲兩枚均勻硬幣&#xff0c;如果兩枚都是正面向上&#xff0c;則贏得2元&#xff0c;否則就輸掉…

上傳圖片后,如何調用API進行商品搜索?

以下是一個完整的示例&#xff0c;展示如何在上傳圖片后調用淘寶按圖搜索商品&#xff08;拍立淘&#xff09;API進行商品搜索&#xff1a; 1. 準備工作 注冊賬號并獲取API密鑰&#xff1a;在淘寶開放平臺注冊賬號&#xff0c;創建應用&#xff0c;獲取app_key和app_secret。 …

Android 數據持久化之 Room 數據庫存儲

一、簡介 Room 是 Google 推出的 Android 持久層框架,建立在 SQLite 之上,提供了一個抽象層,簡化了數據庫操作。它通過注解和編譯時檢查來確保數據操作的正確性。 Room 主要由以下三個組件組成: Entity(實體):定義封裝實際數據的實體類,每個實體類對應數據庫中的一個…