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.mzph.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(实体):定义封装实际数据的实体类,每个实体类对应数据库中的一个…