通过Jackson-2.9.7导出/导入JSON文件

时间:2018-10-31 09:51:33

标签: java json jackson

嘿,

我目前正在研究一个项目,该项目中用户应该能够将程序数据导入/导出到JSON文件(类型为TreeMap<String, List<Observation>>,其中观察值为包含LocalDate date和{ {1}})

要实现导出部分,我使用了Jackson 2.9.7 JAR文件中的某些文件来访问 ObjectMapper ,从而将数据导出到JSON文件中。 工作!

int value

但是,要实现导入部分,我再次使用了Jackson 2.9.7 JAR文件来访问对象映射器,该对象映射器再次 Works!

ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(file, handler.get(LocalDate.MIN, LocalDate.MAX));

但是,当我尝试将现在已导入的项目添加到临时地图中时,结构不再是我期望的。相反,它似乎已将其转换为具有多个条目的LinkedHashMap,因此我不能简单地使用byte[] rawJson = new byte[dStream.available()]; ObjectMapper mapper = new ObjectMapper(); dStream.readFully(rawJson); map = mapper.readValue(rawJson, TreeMap.class); 类。我猜是因为我在阅读Observation时使用了它,尽管经过一些尝试,我不能说我知道该怎么做。

The values of the imported data

1 个答案:

答案 0 :(得分:1)

使用TypeReference

写:

TypeReference<Map<String, List<Observation>>> typeRef = 
new TypeReference<Map<String, List<Observation>>>() {};
ObjectMapper mapper = new ObjectMapper();
mapper.writerFor(typeRef).writeValue(file, handler.get(LocalDate.MIN, LocalDate.MAX));

阅读:

byte[] rawJson = new byte[dStream.available()];
TypeReference<Map<String, List<Observation>>> typeRef = 
new TypeReference<Map<String, List<Observation>>>() {};
ObjectMapper mapper = new ObjectMapper();
dStream.readFully(rawJson);                            
map = mapper.readValue(rawJson, typeRef);