Java Jackson-使用动态密钥反序列化json

Java Jackson-使用动态密钥反序列化json,java,json,jackson,Java,Json,Jackson,我有以下JSON: { "2016-01-23": { "downloads": 4, "re_downloads": 1, "updates": 0, "returns": 0, "net_downloads": 4, "promos": 0, "revenue": "0.00", "returns_amount": "0.00", "edu_downloads": 0, "gifts": 0, "gi

我有以下JSON:

{
  "2016-01-23": {
    "downloads": 4,
    "re_downloads": 1,
    "updates": 0,
    "returns": 0,
    "net_downloads": 4,
    "promos": 0,
    "revenue": "0.00",
    "returns_amount": "0.00",
    "edu_downloads": 0,
    "gifts": 0,
    "gift_redemptions": 0,
    "date": "2016-01-23"
  },
  "2016-01-24": {
    "downloads": 1,
    "re_downloads": 1,
    "updates": 0,
    "returns": 0,
    "net_downloads": 1,
    "promos": 0,
    "revenue": "0.00",
    "returns_amount": "0.00",
    "edu_downloads": 0,
    "gifts": 0,
    "gift_redemptions": 0,
    "date": "2016-01-24"
  }
}
当日期每次都会改变时,我如何解析它?我必须使用Jackson进行解析

当您拥有动态关键点时,可以使用。键的类型和值取决于您的需要


最简单的方法是
Map
。为此,您需要一个:

ObjectMapper mapper=new ObjectMapper();
地图=
readValue(json,newTypeReference(){});

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

需要以下依赖项:


com.fasterxml.jackson.datatype
jackson-datatype-jsr310
${jackson.version}
然后你可以有:

ObjectMapper mapper=new ObjectMapper();
registerModule(新的JavaTimeModule());
地图=
readValue(json,newTypeReference(){});

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

公共类Foo{
私有整数下载;
@JsonProperty(“重新下载”)
私有整数重下载;
私有整数更新;
私有整数返回;
@JsonProperty(“网络下载”)
私有整数下载;
私人整数促销;
私人收入;
@JsonProperty(“返回金额”)
私有字符串返回samount;
@JsonProperty(“edu_下载”)
私有整数下载;
私人礼品;
@JsonProperty(“礼物赎回”)
私有整数giftreDemption;
//默认构造函数,省略了getter和setter
}
然后你可以有一张
地图

ObjectMapper mapper=new ObjectMapper();
registerModule(新的JavaTimeModule());
地图=
readValue(json,newTypeReference(){});

或者回答得很好,尤其是当您添加了Finally部分时,应该这样做。