Jackson json-parser setter zu übernehmen Wert als string-array

Habe ich unten 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\"}]";

Bin ich mit dem jackson-parser, um eine Karte zu einer Klasse:

Möchte ich filmname und filmname auf Karte in die Name-Eigenschaft in der java-Klasse. Also schrieb ich die unten Klasse:

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;
    }

}

In meiner realen json-es gibt so viele Felder, wie filmname, movieTitle, die ich will, zu normalisieren, zu einem gemeinsamen Namen.

Gibt es eine einfache syntax wie die unten, um code-Duplizierung:

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;
        }
}
  }

Den obigen code gab mir Fehler auf jsonSetter:

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

BEARBEITEN

Wenn Jackson es nicht unterstützt, kann GSON diesen Vorgang Unterstützen.

Dank

Ihre Frage ist nicht ganz klar... willst du eine Liste von Objekten Movie mit einem Attribut name enthält den Wert entweder "movieName" oder "movieTitle"? Und wenn, sagen wir mal, "movieName" einen Wert hat, ist "movieTitle" werden immer emtpty?
Haben Sie versucht, indem Sie mehrere Anmerkungen zu setName, eine für filmname und eine für filmname? Ansonsten die folgende Lösung mit @JsonAnySetter arbeiten.
ja, ich möchte eine Liste von Objekten, die Film mit einem Attribut name, welches den Wert von movie-name-oder Film-Titel. Ja, wenn ein Film den Namen hat ein vlaue dann Film-Titel leer ist.

InformationsquelleAutor javaMan | 2013-06-04

Schreibe einen Kommentar