tôi có dưới đây json:Jackson phân tích cú pháp JSON setter để có giá trị như mảng chuỗi
"[{\"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\"}]";
Tôi đang sử dụng jackson phân tích cú pháp để ánh xạ nó vào một lớp:
Tôi muốn movieName và movieTitle để ánh xạ vào Tên thuộc tính trong lớp java. Vì vậy, tôi đã viết lớp dưới đây:
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;
}
}
Trong json thật của tôi có rất nhiều lĩnh vực như movieName, movieTitle mà tôi muốn bình thường hóa thành một tên gọi chung.
Có bất kỳ cú pháp đơn giản như dưới đây có thể làm giảm việc lặp lại 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;
}
}
}
Đoạn mã trên đã cho tôi lỗi trên jsonSetter:
Type mismatch: cannot convert from String[] to String.
EDIT
Nếu Jackson không hỗ trợ nó, GSON có thể hỗ trợ hoạt động này không.
Cảm ơn
Câu hỏi của bạn không rõ ràng lắm ... bạn có muốn danh sách các đối tượng 'Phim' có thuộc tính' name', chứa giá trị của '' movieName "' hoặc '" movieTitle không "'? Và nếu, giả sử, '" movieName "' có một giá trị, '" movieTitle "' sẽ luôn luôn là emtpty? – MikO
Bạn đã thử thêm nhiều chú thích vào setName, một cho movieName và một cho movieTitle chưa?Nếu không, giải pháp bên dưới với @JsonAnySetter sẽ hoạt động. – Sumit
@MikO có tôi muốn một danh sách các đối tượng Phim có tên thuộc tính, chứa giá trị của tên phim hoặc tên phim. Có nếu tên phim có tên vlaue thì tiêu đề phim trống. – javaMan