Десериализация Джексона приводит к "java.util.LinkedHashMap не может быть приведен к модели. Художники" - PullRequest
0 голосов
/ 06 мая 2018

Чтобы получить данные из json, я использовал RestTemplate, и он работает для получения всех моих данных и отображения их на локальном хосте. Массив, который я получил, теперь я хочу отфильтровать, чтобы получить только некоторые данные и поместить их в новый массив, но когда я пытаюсь запустить его, он выдает «java.lang.ClassCastException: java.util.LinkedHashMap не может быть приведен к model.Artists» Должен ли я получить данные Json другим способом или функция фильтрации нуждается в преобразовании?

Модель класса модель упаковки; import com.fasterxml.jackson.annotation.JsonIgnoreProperties;

@JsonIgnoreProperties(ignoreUnknown = true)
public class Artists {
private String ArtistName;
private String Stage;
private String Day;
private String Hour;

public Artists(){
}

public String getArtistName() {
    return ArtistName;
}

public void setArtistName(String artistName) {
    ArtistName = artistName;
}

public String getStage() {
    return Stage;
}

public void setStage(String stage) {
    Stage = stage;
}

public String getDay() {
    return Day;
}

public void setDay(String day) {
    Day = day;
}

public String getHour() {
    return Hour;
}

public void setHour(String hour) {
    Hour = hour;
}

@Override
public String toString() {
    return "Artists [ArtistName=" + ArtistName + ", Stage=" + Stage + ", Day=" + Day + ", Hour=" + Hour + "]";
}


}

Класс обслуживания

@Service
public class ArtistsWrapper {
 private List<Artists> artists;
 private final String url ="some_random_website";
    /**
     * @return the artists
     */

    public List<Artists> getArtists() {
        RestTemplate restTemplate=new RestTemplate();
        this.artists=restTemplate.getForObject(url, List.class);

        return artists;
    }

   public List<Artists> getArtistsByStage(String stage)
   {

       System.out.println(artists.toString());
       List<Artists> result = new ArrayList<Artists>();
       for(Artists a: artists)
       {
           if(stage.equals(a.getStage()))
               System.out.println(a.toString()+"\n");
               result.add(a);
       }

       return result;
   }

Контроллер класса

@RestController
@RequestMapping("/api")
public class ArtistsController {

@Autowired
ArtistsWrapper aw;

/*@RequestMapping("/artists")
public List<Artists> artists() {
    return aw.getArtists();
}
*/
@RequestMapping("/artists")
public List<Artists> artistsByStage(@RequestParam(value="stage", defaultValue="Main") String name) {
    return aw.getArtistsByStage(name);
}


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...