如何在java中获取json数组的长度

如何在java中获取json数组的长度,java,json,Java,Json,我正在处理一个需求,其中我需要获得以下json的长度 以及整个json中filters对象的长度 为引用附加json { "employeeId": "41825", "userId": "tawright", "sourceSystem": "Visibility", "loginId": "nudayaku", "groupBy": "order", "isPretty": false, "limit": 10, "offset

我正在处理一个需求,其中我需要获得以下json的长度 以及整个json中filters对象的长度

为引用附加json

{
    "employeeId": "41825",
    "userId": "tawright",
    "sourceSystem": "Visibility",
    "loginId": "nudayaku",
    "groupBy": "order",
    "isPretty": false,
    "limit": 10,
    "offset": 0,
    "sortBy": "so_date",
    "sortOrder": "desc",
    "filters": [{
        "name": "type",
        "value": "POS",
        "op": "eq"
    }],
    "srpGoalHeaderId": 3069181,
    "srpGoalQuotaId": 1750558,
    "category": "PRD & SVC|AG",
    "goalSheet": "2020 CS020        28-Jul-2019 to 25-Jul-2020",
    "loggedInUser": "nudayaku",
    "requestedScreen": "orderSearch.g2c"
}
有人能帮助我如何获得这个JSon中涉及的过滤器的长度吗

我在解析JSOn时遇到以下错误

org.json.simple.JSONArray不能强制转换为org.json.JSONArray

错误日志:

Exception is  java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.JSONArray java.lang.ClassCastException: org.json.simple.JSONArray cannot be cast to org.json.JSONArray
谢谢,
Nikhil

尝试将其映射到一个对象,您可以很容易地获得过滤器的长度。 乙二醇

要将json解析为对象,请使用JsonParser e、 g

“filters”jsonArray的长度实际上是1,因为在方括号内有{},它被认为是数组中的1个元素

假设您想要获取json数组中json对象的大小,即

{ “名称”:“类型”, “值”:“POS”, “op”:“eq” }


您需要遍历对象以获得导入JSONArray的大小,如下所示(从其他库)

也从json simple导入它

import org.json.simple.JSONArray;

希望这有帮助

您混合了两个不兼容的json处理库,因此出现了错误

从您的代码片段:

import org.json.JSONArray;
import org.json.simple.JSONObject;
显然这是错误的:

org.json.simple

org.json
受到其他一些库的支持,如

最好是打开相应的类并检查它们实际属于哪个jar(例如,在IntelliJ中,您只需按
Alt+F1


因此,坚持使用一个库,它应该会起作用。

您可以使用正在创建的同一个
ObjectMapper
来获取
过滤器列表,而不是混合两个不同的库操作,这两个库操作确实是错误的

ObjectMapper mapper=new ObjectMapper()

使用上面的
映射器
将json转换为
映射
,然后就可以处理整个json了。您可以这样做来从json中获取列表

Map<String, Object> map = mapper.readValue(json, Map.class);
        if(map.containsKey("filters")) {
            List<Object> filters = (List) map.get("filters");
            System.out.println(filters);
            System.out.println(filters.size());
        }

发布有问题的Java代码会很有帮助,因为这就是引发异常的原因,你不这么认为吗?请确保包含导入语句,并确保完整剪切和粘贴准确的错误消息,而不是从内存中键入,因为如果最初包含的错误消息是正确的,则您的解决方案可能比类似消息更为深奥。您好,我已经用import更新了import语句和java代码,其中json改变了我的工作方式
to
import org.json.simple.JSONArray
并重试。是的,我需要计算数组中的筛选器数,如下面的示例。“筛选器”:[{“名称”:“预订”,“值”:“0”,“op”:“neq”},{“名称”:“类型”,“值”:“直接”,“op”:“eq”}],这里的过滤器数量是2,我不确定如何获得jsonuse中的过滤器数量,比如JSONObject obj=new JSONObject();org.json.JSONArray JSONArray=obj.getJSONArray(“过滤器”);
import org.json.JSONArray;
import org.json.simple.JSONArray;
import org.json.JSONArray;
import org.json.simple.JSONObject;
Map<String, Object> map = mapper.readValue(json, Map.class);
        if(map.containsKey("filters")) {
            List<Object> filters = (List) map.get("filters");
            System.out.println(filters);
            System.out.println(filters.size());
        }
[{name=type, value=POS, op=eq}]
1