Java Jackson-使用动态密钥反序列化json
我有以下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
{
"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部分时,应该这样做。