如何使用Jackson读取以方括号开头的JSON?[副本]

xmjla07d  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(101)

此问题已在此处有答案

How to use Jackson to deserialise an array of objects(10个答案)
12天前关闭
如何使用Jackson库读取JSON元素列表?它基本上是以方括号开头的,就像下面这样:

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

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

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

但是,当JSON以方括号开始时,如何读取它?

moiiocjp

moiiocjp1#

有两种解决方案:
如果您想立即加载所有内容:

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);

如果你选择了带有MappingIterator的版本,请记住在使用完迭代器后关闭它,以便释放与它相关的任何资源。

相关问题