You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JSONSimple库判断API返回的JSON数组是否为空?

解决JSONSimple中判断JSON数组是否为空、获取长度的问题

嘿,我来帮你搞定这个JSONSimple的使用问题!你遇到的错误大概率是因为从JSONObject里取出的字段没有正确转换为JSONArray类型,或者没做类型校验导致的。下面给你一步步讲正确的实现方式:

核心思路

从JSONObject中获取数组字段时,返回的是Object类型,必须先校验它的类型是否为JSONArray,再强制转换,之后就能用size()方法获取长度、判断是否为空了。

完整代码示例

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JsonArrayDemo {
    public static void main(String[] args) throws ParseException {
        // 模拟你获取到的JSONObject
        String jsonStr = "{\"order\":[]}";
        JSONParser parser = new JSONParser();
        JSONObject jsonObj = (JSONObject) parser.parse(jsonStr);

        // 第一步:先检查字段是否存在
        if (jsonObj.containsKey("order")) {
            Object orderField = jsonObj.get("order");
            
            // 第二步:校验字段类型是否为JSONArray
            if (orderField instanceof JSONArray) {
                JSONArray orderArray = (JSONArray) orderField;
                int arrayLength = orderArray.size();

                // 判断数组是否为空并输出结果
                if (arrayLength == 0) {
                    System.out.println("order数组是空的");
                } else {
                    System.out.println("order数组的长度是:" + arrayLength);
                }
            } else {
                // 处理字段类型不符的情况
                System.err.println("注意:order字段不是一个JSON数组");
            }
        } else {
            // 处理字段不存在的情况
            System.err.println("JSON中没有找到order字段");
        }
    }
}

为什么之前会出错?

很多人容易犯的错误是直接把jsonObj.get("order")强制转成JSONArray,却没做类型判断——如果这个字段不存在(返回null),或者实际类型不是数组(比如是字符串、数字),就会抛出ClassCastException或者NullPointerException。上面的代码通过两步校验(字段存在性、类型正确性),就能避免这类错误。

额外提示

如果你的业务场景中,order字段可能被错误地设置为null(比如{"order":null}),那还需要在类型判断前加上null校验:

if (orderField != null && orderField instanceof JSONArray) {
    // 后续逻辑
}

内容的提问来源于stack exchange,提问作者Tim Willis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:11:19