Comment désérialiser une classe avec des constructeurs surchargés à l'aide de JsonCreator

Je suis en train de désérialiser une instance de cette classe à l'aide de Jackson 1.9.10:

public class Person {

@JsonCreator
public Person(@JsonProperty("name") String name,
        @JsonProperty("age") int age) {
    //... person with both name and age
}

@JsonCreator
public Person(@JsonProperty("name") String name) {
    //... person with just a name
}
}

Quand j'ai essayer ce que je reçois le

Conflit sur la propriété des créateurs: déjà eu ... {interface org.codehaus.jackson.annoter.JsonCreator @org.codehaus.jackson.annoter.JsonCreator()}], rencontrés ... , annotations: {interface org.codehaus.jackson.annoter.JsonCreator @org.codehaus.jackson.annoter.JsonCreator()}]

Est-il un moyen pour désérialiser une classe avec des constructeurs surchargés à l'aide de Jackson?

Grâce

  • Comme la réponse de points, pas d', vous devez spécifier l'un et seul constructeur. Dans votre cas, laissez celui qui prend plusieurs arguments, qui fonctionnent très bien. "Manquant" arguments de prendre la valeur null (pour les Objets), ou la valeur par défaut (pour les primitives).
  • Merci. Ce qui permet à plusieurs constructeurs serait une fonctionnalité intéressante cependant. En fait, mon exemple est un peu artificiel. L'objet que je suis en train d'utiliser, en réalité, a complètement différentes listes d'arguments, l'un est créé normalement, l'autre est créée avec un Throwable... je vais voir ce que je peux faire, peut-être avoir un constructeur vide et les getter / setter pour le Lancer
  • Ouais, je suis sûr que ça serait bien, mais les règles peuvent devenir assez complexes avec différentes permutations. Toujours possible de déposer RFEs pour les nouvelles fonctionnalités, les caractéristiques.
InformationsquelleAutor geejay | 2013-04-10