首页 > 编程语言 >java字段值为null,转json后不存在该字段对应的key

java字段值为null,转json后不存在该字段对应的key

时间:2023-03-03 10:00:35浏览次数:33  
标签:段值 java name age JSON json key null

在 Java 中,将对象转换为 JSON 字符串通常使用第三方库(如 Jackson、Gson 等)。对于字段值为 null 的情况,通常存在两种处理方式:

  1. 对应的 JSON key 不存在。 这是默认情况,通常情况下这也是比较合理的做法,因为 null 表示缺失或者无值,而在 JSON 中,一个 key 的存在通常表示该值是有意义的,因此将 null 转换为不存在的 key 更符合语义。例如,对于 Java 对象:

    class Person { private String name; private Integer age; // getters and setters }

    转换为 JSON 字符串后,如果 name 字段有值而 age 字段为 null,则对应的 JSON 字符串为:

    json {"name":"John"}
  2. 对应的 JSON key 存在,但值为 null。 如果希望在 JSON 中保留这个 key,而不是将其删除,可以使用一些库的配置参数,比如 Jackson 中可以使用 SerializationFeature.WRITE_NULL_MAP_VALUES 属性。例如,对于上述的 Person 对象,如果希望在 JSON 中保留 age 字段,可以这样配置:

    java ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, true); String jsonString = objectMapper.writeValueAsString(person);

    这样,如果 name 字段有值而 age 字段为 null,则对应的 JSON 字符串为:

    json {"name":"John","age":null}   但是java字段值为“”,转json后就会存在该字段对应的key

标签:段值,java,name,age,JSON,json,key,null
From: https://www.cnblogs.com/mabiao008/p/17174544.html

相关文章

  • 全局视角看技术-Java多线程演进史
    作者:京东科技文涛全文较长共6468字,语言通俗易懂,是一篇具有大纲性质的关于多线程的梳理,作者从历史演进的角度讲了多线程相关知识体系,让你知其然知其所以然。前言2022......
  • json字符串转Map集合
    /***json字符串转list*@paramjsonStr*@return*/publicstaticList<Map<String,Object>>GetJsonListByString(StringjsonStr){List<Map<String,Obje......
  • Json数组形式的字符串转为Map数组 Map集合的几种遍历方式
    //Json数组形式的字符串转为Map数组StringstrArr="[{"name":"xx","age":"16"},{"name":"yy","age":"18"}]";//第一种方式List<Map<String,String>......
  • Java程序调优分析-待补充
    一、 JAVA程序运行逻辑分析示例图:   类加载器(ClassLoader):负责将编译好的.class字节码文件加载到内存中,使得JVM可以实例化或以其他方式使用加载后的类。类加载器......
  • JAVA - 基础
    隐式转换基本的隐式转换把一个取值范围小的数值或者变量,赋值给另一个取值范围大的变量float为什么比long类型的取值范围大?答:小数的二进制存储形式,更加节省内......
  • Java 变量
    为什么需要变量 一花一世界,如果把一个程序看做一个世界或一个社会的话,那么变量就是程序世界的花花草草、万事万物。即,变量是程序中不可或缺的组成单位,最基本的存储单元......
  • Java基础——异常
       总结,一共有以下两种情况,finally块的代码不会被执行:1.如果JVM在执行try或catch代码时退出(虚拟机停止运行,即崩溃或关闭System.exit()),那么finally块可能不会执......
  • Java关于栈(Stack)、队列(Queue)知识点拓展
    Stack类:Stack继承了Vector,而Vector类底层使用数组存储数据,Stack对象中存储的数据也是存储在数组中,常用方法:push(Edata):把数据压入栈addElement():是父类Vect......
  • Java学习之字节流写入的两个小问题
     packagecom.itheima_112;/*字节流写数据的两个小问题:1:字节流写数据如何实现换行呢?windows:\r\nlinux:\nmac:\r......
  • JavaSE——金额转换
    packagecom.zhao.stringtest;importjava.util.Scanner;publicclassTest3{//金额转换//查表法publicstaticvoidmain(String[]args){......