JSONObject.toJSONString()默认忽略值为null的属性

您所在的位置:网站首页 null能tostring吗 JSONObject.toJSONString()默认忽略值为null的属性

JSONObject.toJSONString()默认忽略值为null的属性

2024-07-06 04:41| 来源: 网络整理| 查看: 265

1 背景

在Java开发中,通常需要将一个实体对象转换成Json字符串,使用FastJson来实现这种转换十分方便,只要使用FastJson中JSONObject静态类提供的toJSONString()静态方法即可,但是如果不了解这个方法,很有可能就会使得转换后的Json不合自己的要求。

使用JSONObject把实体对象转换成Json字符串时,如果实体对象中有些属性的值为null,则默认转换后的Json字符串中是不包含这些值为null的属性。

2 演示程序

2.1 此程序演示了使用JSONObject提供的以下两种方法将实体对象转换成Json字符串:

public static String toJSONString(Object object, boolean prettyFormat); public static String toJSONString(Object object, SerializerFeature... features);

2.2 Java程序完整代码如下:

import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; /** * 使用FastJson将实体对象转换成Json字符串测试类 */ public class FastJsonApplication { public static void main(String[] args) { User user = new User(); user.setId(1L); user.setUsername("张三"); user.setPassword(""); user.setMobile(null); /** * 忽略值为null的属性 */ String jsonUser = JSONObject.toJSONString(user, true); System.out.println(jsonUser); /** * 忽略值为null的属性 */ jsonUser = JSONObject.toJSONString(user, SerializerFeature.PrettyFormat); System.out.println(jsonUser); /** * 包括值为null的属性 */ jsonUser = JSONObject.toJSONString(user, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue); System.out.println(jsonUser); } /** * 用户实体类 */ public static class User { private Long id; private String username; private String password; private String mobile; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getMobile() { return mobile; } public void setMobile(String mobile) { this.mobile = mobile; } } }

2.3 运行结果: 在这里插入图片描述 说明:第一次和第二次输出的Json字符串中都没有mobile这个属性,因为该属性的值为null。

3 总结:

public static String toJSONString(Object object, boolean prettyFormat): 该方法将实体对象转换成Json字符串时默认忽略值为null的属性。

public static String toJSONString(Object object, SerializerFeature… features): 该方法将实体对象转换成Json字符串时,如果不传递参数SerializerFeature.WriteMapNullValue,则忽略值为null的属性。

4 扩展

public static String toJSONString(Object object, SerializerFeature… features)方法可以接收多个SerializerFeature类型的参数,而SerializerFeature是枚举类型,其中定义了如下的一些枚举对象:

package com.alibaba.fastjson.serializer; public enum SerializerFeature { QuoteFieldNames, UseSingleQuotes, WriteMapNullValue, WriteEnumUsingToString, WriteEnumUsingName, UseISO8601DateFormat, WriteNullListAsEmpty, WriteNullStringAsEmpty, WriteNullNumberAsZero, WriteNullBooleanAsFalse, SkipTransientField, SortField, /** @deprecated */ @Deprecated WriteTabAsSpecial, PrettyFormat, WriteClassName, DisableCircularReferenceDetect, WriteSlashAsSpecial, BrowserCompatible, WriteDateUseDateFormat, NotWriteRootClassName, /** @deprecated */ DisableCheckSpecialChar, BeanToArray, WriteNonStringKeyAsString, NotWriteDefaultValue, BrowserSecure, IgnoreNonFieldGetter, WriteNonStringValueAsString, IgnoreErrorGetter, WriteBigDecimalAsPlain, MapSortField; /** * 省略其它代码 * / }

JSONObject.toJSONString()包含或排除指定的属性这篇文章演示了使用SerializeFilter来指定包含或者排除的属性,使得生成的JSON字符串中包含或者不包含某些属性。

如果觉得本文对您有帮助,请关注博主的微信公众号,会经常分享一些Java和大数据方面的技术案例! 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3