Hutool中 的JSONUtil方法如何将String转为JSONObject时,将null的字段都剔除掉
时间: 2025-04-06 16:10:47 浏览: 88
### Hutole JSONUtil 的 `String` 转 `JSONObject` 并剔除 `null` 字段
Hutool 是一个非常流行的 Java 工具库,提供了丰富的工具类来简化开发工作。其中,`JSONUtil` 类用于处理 JSON 数据的解析和序列化操作。
当使用 Hutool 将字符串转换为 `JSONObject` 时,默认情况下不会自动移除值为 `null` 的字段。如果希望实现这一功能,则可以通过自定义配置或者手动设置过滤条件完成此目标[^1]。
以下是具体实现方式:
#### 使用 `JSONConfig` 配置过滤选项
Hutool 提供了一个名为 `JSONConfig` 的类,允许开发者通过它来自定义 JSON 序列化的行为。为了在将对象转化为 JSON 字符串的过程中忽略 `null` 值,可以创建一个新的 `JSONConfig` 实例并启用相应的属性。
```java
import cn.hutool.json.JSON;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
public class Main {
public static void main(String[] args) {
String jsonString = "{\"id\":\"2\",\"name\":\"王超\",\"age\":12,\"tel\":null,\"address\":\"\",\"time\":\"2023-09-13 23:23:12\"}";
// 创建 JSON 对象的同时应用 JSONConfig 来排除 null 值
JSONObject jsonObject = JSONUtil.parseObj(jsonString, true);
System.out.println("原始 JSON:" + jsonString);
System.out.println("去除 Null 后的结果:" + jsonObject.toString());
}
}
```
上述代码片段展示了如何利用 Hutool 中的 `parseObj()` 方法加载 JSON 字符串,并传递布尔参数指定是否跳过键值对中的 `null` 值[^4]。
#### 自定义过滤逻辑
除了依赖内置机制外,还可以借助 FastJSON 或其他框架的思想,在数据结构被映射成最终形式之前对其进行预处理。例如,编写类似于下面这样的辅助函数即可满足需求[^3]:
```java
import cn.hutool.core.util.ReflectUtil;
import cn.hutool.json.JSONObject;
import java.lang.reflect.Field;
public class CustomFilter {
/**
* 移除非空字段的方法.
*/
public static <T> T filterNullFields(T target){
Field[] fields = ReflectUtil.getFields(target.getClass());
for (Field field : fields){
try{
Object value = ReflectUtil.getFieldValue(target,field.getName());
if(value == null){
ReflectUtil.setFieldValue(target,field.getName(),"");
}
}catch(Exception e){
throw new RuntimeException(e.getMessage(),e);
}
}
return target;
}
}
```
注意:以上示例仅作为概念验证用途,请根据实际项目环境调整细节部分。
---
#### 性能考量与注意事项
尽管能够成功地从结果集中删除所有的 `null` 键/值组合项,但在某些场景下这样做可能带来副作用——比如破坏原有业务语义表达能力等问题因此需谨慎对待此类变更决策过程[^2]。
---
阅读全文
相关推荐


















