当前位置: 首页 > article >正文

在Java对象转JSON字符串时不显示无值参数

在Java中,可以通过在展示数据的逻辑中添加判断条件来实现这一需求。以下是一些常见的场景和实现方法:

场景一:在Java对象转JSON字符串时

  • 使用Gson库

    • 代码实现
      • 首先引入Gson依赖,如果使用Maven构建项目,在pom.xml文件中添加:
        <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.10.1</version>
        </dependency>
        
      • 然后定义一个Java Bean类:
        public class User {private String name;private Integer age;//省略构造函数、getter和setter方法
        }
        
      • 在转换为JSON字符串时,可以根据字段是否有值来决定是否包含在JSON中:
        import com.google.gson.Gson;
        import com.google.gson.GsonBuilder;public class Main {public static void main(String[] args) {User user = new User();user.setName("张三");//user.setAge(25); // 如果注释掉这行,age字段将不会出现在JSON中Gson gson = new GsonBuilder().create();String json = gson.toJson(user);System.out.println(json);}
        }
        
        如果age字段没有设置值,输出的JSON字符串将不包含age键。
  • 使用Jackson库

    • 代码实现
      • 添加依赖(Maven项目在pom.xml中添加):
        <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.2</version>
        </dependency>
        
      • 定义Java Bean(与上面相同)。
      • 在转换时,可以通过@JsonInclude注解来控制:
        import com.fasterxml.jackson.annotation.JsonInclude;
        import com.fasterxml.jackson.databind.ObjectMapper;@JsonInclude(JsonInclude.Include.NON_NULL) // 指定只有非空字段才会被包含在JSON中
        public class User {private String name;private Integer age;//省略构造函数、getter和setter方法
        }public class Main {public static void main(String[] args) {User user = new User();user.setName("张三");//user.setAge(25); // 如果注释掉这行,age字段将不会出现在JSON中ObjectMapper objectMapper = new ObjectMapper();try {String json = objectMapper.writeValueAsString(user);System.out.println(json);} catch (Exception e) {e.printStackTrace();}}
        }
        
        age字段为null时,不会出现在JSON结果中。
http://www.lryc.cn/news/2392581.html

相关文章:

  • 在 Ubuntu 服务器上 下载 Clash 文件使用代理
  • 微信小程序一次性订阅封装
  • Spring AI MCP的几个小问题
  • 安全帽检测算法AI智能分析网关V4守护工地/矿山/工厂等多场景作业安全
  • Pycharm的简单介绍
  • 重新安装解决mac vscode点击不能跳转问题
  • Go语言中flag包的用法详解
  • Python自动化之selenium语句——打开、关闭浏览器和网页
  • 【数据结构】--二叉树--堆(上)
  • Rust 学习笔记:使用迭代器改进 minigrep
  • 多线程(5)——单例模式,阻塞队列
  • React整合【ECharts】教程004:饼图的构建和基本设置
  • 视频监控汇聚平台EasyCVR工业与安全监控:防爆摄像机的安全应用与注意事项
  • Android 倒计时总结
  • 基于 Redis 实现分布式锁:原理及注意事项
  • 手机设备多?怎样设置IP保证不关联
  • Linux 中常见的安全与权限机制
  • Golang|单例模式
  • 哈尔滨工业大学计算机系统大作业程序人生-Hello’s P2P
  • 小程序定制开发:从需求到落地,打造企业专属数字化入口
  • 【C/C++】基于 Docker 容器运行的 Kafka + C++ 练手项目
  • Linux系统管理与编程24:基础条件准备-混搭“本地+阿里云”yum源
  • 新一代Python管理UV完全使用指南|附实际体验与效果对比
  • 如何在 Windows 10 PC 上获取 iPhone短信
  • STM32程序运行不了,仿真功能也异常,连断点和复位都异常了
  • Linux 系统中的软链接与硬链接
  • Python爬虫第22节- 结合Selenium识别滑动验证码实战
  • 【C/C++】chrono简单使用场景
  • Escrcpy(安卓手机投屏软件) v1.29.6 中文绿色版
  • Oracle MOVE ONLINE 实现原理