问题描述
我有以下代码,用于使用Jackson解析文件中的json数据。
ObjectMapper mapper = new ObjectMapper();
JsonFactory jsonFactory = new JsonFactory();
try(BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsstream("/foos.json")))) {
Iterator<Foo> fooItr = mapper.readValues( jsonFactory.createParser(br),Foo.class);
fooItr.forEachRemaining(System.out::println);
}catch(Exception ex){ .. }
不适用于以下格式的JSon数组
[
{...},{...}
]
但适用于格式
{...}
{...}
解决方法
通过列表而不是Foo类作为传递列表,而使用Mapper进行序列化
尝试一下-
List<Foo> tempList = new ArrayList<>();
JsonFactory jsonFactory = new JsonFactory();
try(BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/foos.json")))) {
tempList = mapper.readValues( jsonFactory.createParser(br),tempList.getClass());
Iterator<Foo> fooItr = tempList.listIterator();
fooItr.forEachRemaining(System.out::println);
}catch(Exception ex){ .. }
,
我找到了以下解决方案
ObjectMapper mapper = new ObjectMapper();
List<MyDataHolder> list = mapper.readValue(
new InputStreamReader(getClass().getResourceAsStream("/foos.json")),new TypeReference<ArrayList<MyDataHolder>>() {});
json数据在文件中。