gpt4 book ai didi

java - 无法使用 Java 和 Jackson 将 JSON 文件正确反序列化为 map

转载 作者:行者123 更新时间:2023-12-01 18:05:41 30 4
gpt4 key购买 nike

我有一个 JSON 文件,其内容是结构图 Map<LocalDate, Map<String, List<FlexiServer>>> ,当我尝试使用对象映射器将这个 JSON 文件读取到 map 中时,它不会按预期生成 map 。

读取JSON文件的函数

private Map<LocalDate, Map<String, List<FlexiServer>>> loadOnDailyBasis(String path)
throws IOException {

InputStream stream = this.getClass().getResourceAsStream(path);
return JSON_MAPPER.readValue(stream, Map.class);
}

调用该函数并将其加载到名为 data 的映射中

Map<LocalDate, Map<String, List<FlexiServer>>> data = loadOnDailyBasis(
"/testdata/servers/dailyservers.json");

数据是一个LinkedHashMap,其键为日期,值为LinkedHashMap。作为内部映射的值具有字符串形式的键和 ArrayList 形式的值。到这里为止都还好,但是当我看到这个 ArrayList 的内容时,它又是一个链接的 HashMap ,其中键是字段的名称,值是它的值。这是错误的。

enter image description here

请建议我如何正确反序列化它。

最佳答案

因此,在阅读 here 中有关 Map 序列化和反序列化的内容后我发现我们可以使用类型引用来正确映射到所需的数据结构。

private Map<LocalDate, Map<String, List<FlexiServer>>> loadOnDailyBasis(String path)
throws IOException {

InputStream stream = this.getClass().getResourceAsStream(path);
TypeReference<Map<LocalDate, Map<String, List<FlexiServer>>>> typeRef = new TypeReference<Map<LocalDate, Map<String, List<FlexiServer>>>>() {
};
return JSON_MAPPER.readValue(stream, typeRef);
}

关于java - 无法使用 Java 和 Jackson 将 JSON 文件正确反序列化为 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60563305/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com