栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

杰克逊-使用动态密钥对JSON进行反序列化

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

杰克逊-使用动态密钥对JSON进行反序列化

当您具有 动态键时 ,可以使用

Map<K,V>
。键的类型和值取决于您的需要。


最简单的方法是

Map<String,Object>
。您需要
TypeReference<T>
为此:

ObjectMapper mapper = new ObjectMapper();Map<String, Object> map =     mapper.readValue(json, new TypeReference<Map<String, Object>>() {});

假设您的密钥是 有效日期 ,则可以使用

Map<LocalDate, Object>

需要以下依赖项:

<dependency>    <groupId>com.fasterxml.jackson.datatype</groupId>    <artifactId>jackson-datatype-jsr310</artifactId>    <version>${jackson.version}</version></dependency>

然后您可以拥有:

ObjectMapper mapper = new ObjectMapper();mapper.registerModule(new JavaTimeModule());Map<LocalDate, Object> map =    mapper.readValue(json, new TypeReference<Map<LocalDate, Object>>() {});

最后,您可以将动态键的值映射到Java类。让我们称之为

Foo

public class Foo {    private Integer downloads;    @JsonProperty("re_downloads")    private Integer reDownloads;    private Integer updates;    private Integer returns;    @JsonProperty("net_downloads")    private Integer netDownloads;    private Integer promos;    private String revenue;    @JsonProperty("returns_amount")    private String returnsAmount;    @JsonProperty("edu_downloads")    private Integer eduDownloads;    private Integer gifts;    @JsonProperty("gift_redemptions")    private Integer giftRedemptions;    // Default constructor, getters and setters omitted}

然后您可以拥有

Map<LocalDate, Foo>

ObjectMapper mapper = new ObjectMapper();mapper.registerModule(new JavaTimeModule());Map<LocalDate, Foo> map =        mapper.readValue(json, new TypeReference<Map<LocalDate, Foo>>() {});


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/454530.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号