如何使用Jackson库读取JSON元素列表? 它基本上从方括号开始,如下所示:

[
   {
      "firstName":"a",
      "lastName":"a"
   },
   {
      "firstName":"b",
      "lastName":"b"
   },
   {
      "firstName":"c",
      "lastName":"c"
   }
]

大多数情况下,JSON以大括号开头,很容易将其映射到Java类:

Person person = mapper.readValue(fileReader, Person.class);

但是,当JSON以方括号开头时,如何阅读它呢?

推荐答案

有两种解决方案:

如果您想要立即加载所有内容:

List<Person> people = mapper.readValue(fileReader, mapper.getTypeFactory().constructCollectionType(ArrayList.class, Person.class));

或更快

List<Person> people = Arrays.asList(mapper.readValue(fileReader, Person[].class))

否则,您可以检索MappingIterator来迭代元素

MappingIterator<Person> iterator = mapper.readerFor(Person.class).readValues(fileReader);

如果您 Select 第二个选项,请记住在完成时关闭迭代器以使用它,以便释放与其相关的任何资源.

Java相关问答推荐

在FML中删除关键帧动画

@ EnableRouting注释在Kotlin项目中不工作

同时运行JUnit测试和Selenium/Cucumber测试时出现问题

尽管类型擦除,instanceof与泛型在Java中如何工作?

填写文本字段后锁定PDF

RESTful框架类字段是安全的还是不安全的

在学习Spring时,通过构造函数参数0表达了不满意的依赖关系

无法播放音频:从资源加载库GStreamer-Lite失败

Android应用程序为错误的显示类型 Select 尺寸文件

寻找Thread.sky()方法的清晰度

插入中的JOOQ序列,设置为VS值

使用迭代器遍历HashMap不会因IF条件而停止

我的代码是线程安全的吗?[Java、CAS、转账]

没有Tomcat,IntelliJ如何在本地运行API?

用于Java的Visual Studio代码完成不起作用

控制器建议异常处理

由于可为null,无法在kotlin中实现java接口

在数组中查找素数时出现逻辑错误

Java 21保护模式的穷尽性

可以';不要在Intellij IDEA中使用最新的Java版本(JDK 21)