如何使用 `com.fasterxml.jackson.core.JsonParser` 确定 json 数组的大小

How to determine the size of json array using `com.fasterxml.jackson.core.JsonParser`

我正在使用公开 api 的内部库来解析 json 值。此 api 提供 com.fasterxml.jackson.core.JsonParser 以供使用,它已使用要读取的适当 json 流实例化。现在,假设此 JsonParser 实例正在解析的 json 流是一个数组对象,我该如何确定数组的大小。

我可以通过使用这个 JsonParser 实例实例化一个 ObjectMapper 来找到一种方法,然后创建一个容器 java class,其中包含一个列表(代表数组),最后确定大小。我想知道是否可以在不使用 ObjectMapper 的情况下仅使用 JsonParser 来完成。

class ResultContainer {
 private List<Object> result;

 public List<Object> getResult() {
   return result;
 }

 public void setResult(List<Object> result) {
   this.result = result;
 }
}
----
void parseEntity(JsonParser parser) {
  ObjectMapper om = new ObjectMapper();
  ResultContainer rc = om.readValue(parser, ResultContainer.class);
  System.out.println(rc.getResult().size());
}

在上面的示例中,有没有一种方法可以仅使用 JsonParser 获取数组的大小,而无需使用 ObjectMapper,因此无需创建虚拟容器 java class。

当然,您可以将 JSON 读入 JsonNodehttps://fasterxml.github.io/jackson-databind/javadoc/2.8/com/fasterxml/jackson/databind/ObjectMapper.html

JsonNode root = mapper.readTree(...);

然后分析这个JsonNode。看例子:https://www.baeldung.com/jackson-json-node-tree-model#2-handling-different-node-types