如何使用 `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 读入 JsonNode
:https://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
我正在使用公开 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 读入 JsonNode
:https://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