3
我寫了一個自定義解串器來僅使用jackson映射必需的字段。開始。將字段傳遞給自定義解串器類Jackson
public class GeneralDeserializer extends JsonDeserializer<GeneralDomain> {
@Override
public GeneralDomain deserialize(JsonParser jp, DeserializationContext ctxt)
throws IOException, JsonProcessingException {
final JsonNode jsonNode = jp.getCodec().readTree(jp);
final Map<String, String> map = new ObjectMapper().convertValue(jsonNode, Map.class);
final String event = "Proxy";
return new GeneralDomain(map.get("id"), event, map.get("name"), map.get("lastLogin"));
}
@Override
public Class<GeneralDomain> handledType() {
return GeneralDomain.class;
}
}
我也有一個mixin類,用於添加額外的註釋。
@JsonDeserialize(using = GeneralDeserializer.class)
public class GeneralDomainMixIn{}
我取這樣的對象,
ObjectMapper mapper = new ObjectMapper();
mapper.addMixIn(GeneralDomain.class, SimpleRevealPublicEventMixIn.class);
String json = "{\"id\": 111, \"name\": David, \"lastLogin\": \"02-10-2016 10:32:00 AM\"}";
GeneralDomain readValue = mapper.readValue(json, GeneralDomain.class);
這個偉大的工程。但正如您在自定義解串器中看到的,我很難編碼事件字段值。這將通過主類中的其他實例變量傳遞。我必須將此字段傳遞給自定義解串器。那麼有沒有辦法在解串器內部訪問這個變量?或者有沒有其他的方法可以實現這一目標?請幫助我。謝謝。
可能已經在這裏回答http://stackoverflow.com/questions/2713316 1 /如何對通構造參數與 - 傑克遜。這有幫助嗎? –
@DanielScott對於遲到的回覆感到抱歉。是的,我確實瀏覽了您發佈的鏈接。對我來說問題是我有一個使用'@ deserialize'註解的MixIn類。即使如果我創建一個構造函數來獲取我需要傳遞的值,如何使用MixIn類來完成此操作?你能解釋一下,如果你知道嗎?謝謝 – 15R6