JSon数组-格式和解析

问题描述

我有以下代码,用于使用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数组

[
  {...},{...}
]

但适用于格式

  {...}
  {...}

对于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数据在文件中。