Jackson parser json setter pour prendre de la valeur en tant que tableau de chaînes

J'ai ci-dessous json:

    "[{\"movieName\":\"A\",\"Leadactor\":\"\",\"leadActress\":\"\",\"movieTitle\":\"\",\"hero\":\"\",\"heroine\":\"\",\"source\":\"IMDB\"}," +
    "{\"movieName\":\"\",\"Leadactor\":\"\",\"leadActress\":\"\",\"movieTitle\":\"B\",\"hero\":\"B1\",\"heroine\":\"B2\",\"source\":\"Netflix\"}," +
    "{\"movieName\":\"C\",\"Leadactor\":\"C1\",\"leadActress\":\"C2\",\"movieTitle\":\"\",\"hero\":\"\",\"heroine\":\"\",\"source\":\"IMDB\"}," +
    "{\"movieName\":\"D\",\"Leadactor\":\"D1\",\"leadActress\":\"D2\",\"movieTitle\":\"\",\"hero\":\"\",\"heroine\":\"\",\"source\":\"IMDB\"}," +
    "{\"movieName\":\"\",\"Leadactor\":\"\",\"leadActress\":\"\",\"movieTitle\":\"E\",\"hero\":\"E1\",\"heroine\":\"E2\",\"source\":\"Netflix\"}]";

Je suis à l'aide de jackson analyseur de la carte à une classe:

Je veux movieName et movieTitle à la carte dans le Nom de la propriété dans la classe java. J'ai donc écrit au-dessous de la classe:

public static class MovieData {
    @JsonProperty("Name")
    private String name;

    @JsonSetter({"movieName"})
    private void setMovieName(final String name) {
            if((name != null) && (! name.equals(""))) {
                    setNameInternal(name);
            }
    }

    @JsonSetter("movieTitle")
    private void setMovieTitle(final String name) {
            if((name != null) && (! name.equals(""))) {
                    setNameInternal(name);
            }
    }

    private void setNameInternal(final String name) {
            this.name = name;
    }

}

Dans ma vraie json il ya tellement de nombreux domaines comme la movieName, movieTitle qui je veux normaliser dans un nom commun.

Est-il une syntaxe simple comme ci-dessous qui permet de réduire la duplication de code:

public static class MovieData {
    @JsonProperty("Name")
    private String name;

 @JsonSetter(value = { "movieName", "movieTitle" })
 private void setName(final String name) {
        if((name != null) && (! name.equals(""))) {
                this.name=name;
        }
}
  }

Le code ci-dessus me donne erreur sur jsonSetter:

 Type mismatch: cannot convert from String[] to String.

MODIFIER

Si Jackson ne le supporte pas, peut GSON en charge cette opération.

Grâce

Votre question n'est pas très clair... voulez-vous une liste d'objets Movie avec un attribut name, qui contient la valeur de "movieName" ou "movieTitle"? Et si, disons, "movieName" a une valeur, "movieTitle" sera toujours emtpty?
Avez-vous essayé d'ajouter de multiples annotations à setName, un pour movieName et un pour movieTitle? Sinon, la solution ci-dessous avec @JsonAnySetter fonctionne.
oui je veux une liste d'objets de Cinéma avec un nom d'attribut, qui contient la valeur de nom de film ou un titre de film. Oui si le nom du film a un vlaue puis titre du film est vide.

OriginalL'auteur javaMan | 2013-06-04