mi hanno sotto JSON:Jackson parser JSON setter di prendere valore come array di stringhe
"[{\"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\"}]";
Sto usando Jackson parser per mappare a una classe:
voglio nomedelfilm e MovieTitle per mappare in Nome proprietà nella classe java. Così ho scritto la classe di seguito:
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;
}
}
Nella mia vera JSON ci sono tanti campi come nomedelfilm, MovieTitle cui voglio per normalizzare in un nome comune.
C'è qualche sintassi semplice come il sottostante che può ridurre la duplicazione del codice:
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;
}
}
}
Il codice di cui sopra mi ha dato errore jsonSetter:
Type mismatch: cannot convert from String[] to String.
EDIT
Se Jackson non lo supporta, può GSON supportare questa operazione.
Grazie
La tua domanda non è molto chiara ... vuoi una lista di oggetti 'Film' con un attributo' nome', che contiene il valore di '" movieName "' o '" movieTitle "'? E se, diciamo, "movieName" 'ha un valore,' "movieTitle" 'sarà sempre emtpty? – MikO
Hai provato ad aggiungere più annotazioni a setName, uno per movieName e uno per movieTitle?Altrimenti funzionerà la soluzione seguente con @JsonAnySetter. – Sumit
@MikO si voglio un elenco di oggetti Movie con un nome di attributo, che contiene il valore del nome del film o del titolo del film. Sì, se il nome del film ha un titolo, il titolo del film è vuoto. – javaMan