[英]Issue mapping Json with jackson
我在映射Java中的下一個json時遇到一些問題:
{
"aggregations": {
"asMap": {
"detail": {
"name": "detail",
"value": 35100
},
"listed": {
"name": "listed",
"value": 618
}
}
},
"docCount": 9,
"key": "789028",
"keyAsNumber": 789028,
"keyAsText": {}
}
到下一個Java bean:
public class RankingValue {
private Integer adId;
private Integer listed;
private Integer detail;
...
...
}
使用傑克遜地圖可以嗎? 我想要的是獲取詳細信息到bean的詳細信息,並獲取列出到bean的詳細信息,最后獲取adId的鍵值。 還有其他替代方法可以映射嗎? 最好的辦法?
提前致謝。
我猜您必須使用自定義反序列化器。 這似乎可行:
public class RankingValueDeserializer extends JsonDeserializer<RankingValue> {
@Override
public RankingValue deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
JsonNode node = jp.getCodec().readTree(jp);
Integer key = node.get("key").asInt();
Integer detail = node.get("aggregations").get("asMap").get("detail").get("value").asInt();
Integer listed = node.get("aggregations").get("asMap").get("listed").get("value").asInt();
return new RankingValue(key, detail, listed);
}
}
你的對象將是類似
@JsonDeserialize(using = RankingValueDeserializer.class)
public class RankingValue {
private Integer adId;
private Integer listed;
private Integer detail;
public RankingValue(Integer key, Integer listed, Integer detail) {
this.adId = key;
this.listed = listed;
this.detail = detail;
}
@Override
public String toString() {
return "RankingValue [adId=" + adId + ", listed=" + listed
+ ", detail=" + detail + "]";
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.