Wie rufe ich den Standard-Deserializer von einem benutzerdefinierten Deserializer in Jackson auf

Ich habe ein problem in meinem custom-deserializer in Jackson. Ich möchte den Zugriff auf die Standard-Serialisierung zum Auffüllen der Objekt bin ich zu Deserialisieren. Nachdem die Bevölkerung ich werde tun, einige benutzerdefinierte Sachen, aber zuerst will ich zu Deserialisieren das Objekt mit dem Standard-jackson-Verhalten.

Dies ist der code, den ich im moment haben.

public class UserEventDeserializer extends StdDeserializer<User> {

  private static final long serialVersionUID = 7923585097068641765L;

  public UserEventDeserializer() {
    super(User.class);
  }

  @Override
  @Transactional
  public User deserialize(JsonParser jp, DeserializationContext ctxt)
      throws IOException, JsonProcessingException {

    ObjectCodec oc = jp.getCodec();
    JsonNode node = oc.readTree(jp);
    User deserializedUser = null;
    deserializedUser = super.deserialize(jp, ctxt, new User()); 
    //The previous line generates an exception java.lang.UnsupportedOperationException
    //Because there is no implementation of the deserializer.
    //I want a way to access the default spring deserializer for my User class.
    //How can I do that?

    //Special logic

    return deserializedUser;
  }

}

Was ich brauche ist eine Methode zum initialisieren der default-deserializer, so dass ich vorab ausfüllen, meine POJO, bevor ich meine Besondere Logik.

Beim Aufruf Deserialisieren von innerhalb der benutzerdefinierten deserializer Es Nahten die Methode wird aufgerufen, aus dem aktuellen Kontext keine Rolle, wie Baue ich die serializer-Klasse. Wegen der Anmerkung in mein POJO. Dies bewirkt, dass ein Stack-Overflow-exception aus offensichtlichen Gründen. Ich habe versucht, die Initialisierung einer beandeserializer aber der Prozess ist sehr Komplex und ich habe es nicht geschafft den richtigen Weg zu finden, es zu tun. Ich habe auch versucht, eine überlastung des annotation-introspector-ohne Erfolg, dachte, es könnte mir helfen, ignorieren Sie die Anmerkung in der DeserializerContext. Schließlich Nähte ich haben könnte, hatte einigen Erfolg mit JsonDeserializerBuilders obwohl dies von mir verlangt zu tun, einige Magische Sachen zu bekommen ahold von der application-Kontext von spring. Ich würde schätzen, dass jede Sache, die dazu führen könnten, dass mir eine saubere Lösung zum Beispiel wie Kann ich konstruiere eine Deserialisierung Kontext Lesen, ohne die JsonDeserializer annotation.

InformationsquelleAutor der Frage Pablo Jomer | 2013-08-19

Schreibe einen Kommentar