java判断json是否空

在 Java 中判断一个字符串是否为“空 JSON”,通常需要区分两种情况:一种是字符串本身为空(null 或 “”),另一种是符合 JSON 格式但没有内容({}[]

根据你使用的 JSON 类库(Jackson, Fastjson, 或 Gson),处理方式略有不同:


1. 使用 Jackson (推荐)

Jackson 是 Spring Boot 默认的 JSON 库,功能最稳健。

Java

 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
 ​
 public boolean isJsonEmpty(String jsonStr) {
    if (jsonStr == null || jsonStr.trim().isEmpty()) {
        return true;
    }
    try {
        ObjectMapper mapper = new ObjectMapper();
        JsonNode node = mapper.readTree(jsonStr);
        // isEmpty() 可以检查 {} 或 []
        return node.isEmpty();
    } catch (Exception e) {
        return true; // 格式非法也可视为广义上的空
    }
 }

2. 使用 Fastjson (常见于国内项目)

Fastjson 提供了非常直接的判断方法。

Java

 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 ​
 public boolean isJsonEmpty(String jsonStr) {
    if (jsonStr == null || jsonStr.isEmpty()) return true;
    try {
        Object obj = JSON.parse(jsonStr);
        if (obj instanceof JSONObject) {
            return ((JSONObject) obj).isEmpty();
        } else if (obj instanceof JSONArray) {
            return ((JSONArray) obj).isEmpty();
        }
        return false;
    } catch (Exception e) {
        return true;
    }
 }

3. 简单的正则/字符串判断 (轻量级)

如果你不想解析整个对象(为了性能),只想快速判断是不是 {}[]

Java

 public static boolean isBasicEmptyJson(String str) {
    if (str == null) return true;
    String trimmed = str.trim();
    return trimmed.equals("{}") || trimmed.equals("[]") || trimmed.isEmpty();
 }

总结对比

场景推荐方案理由
严谨校验Jacksonnode.isEmpty()能识别{ }(带空格) 等复杂情况。
极致性能字符串equals(“{}”)无需创建解析对象,适用于已知格式简单的场景。
通用业务Fastjson代码量少,API 直观。

微信公众号        

欢迎关注公众号

上一篇
下一篇