Хобрук: Ваш путь к мастерству в программировании

Spring mvc, не удалось прочитать JSON: невозможно десериализовать экземпляр java.util.Vector из токена START_OBJECT

Хорошо, я пытаюсь получить такой JSON

[{"username":"pippo","password":"bla"},{"username":"pluto","password":"bla"},{"username":"topolino","password":"bla"}]

Но я получаю эту ошибку:

    Resolving exception from handler [public void sequenziatore.server.presenter.LoginController.CheckLogin(java.util.Vector<sequenziatore.server.presenter.Utente>)]: org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not deserialize instance of java.util.Vector out of START_OBJECT token
 at [Source: org.apache.catalina.connector.CoyoteInputStream@68c40ef9; line: 1, column: 1]; nested exception is org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.Vector out of START_OBJECT token
 at [Source: org.apache.catalina.connector.CoyoteInputStream@68c40ef9; line: 1, column: 1]
Resolving exception from handler [public void sequenziatore.server.presenter.LoginController.CheckLogin(java.util.Vector<sequenziatore.server.presenter.Utente>)]: org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not deserialize instance of java.util.Vector out of START_OBJECT token
 at [Source: org.apache.catalina.connector.CoyoteInputStream@68c40ef9; line: 1, column: 1]; nested exception is org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.Vector out of START_OBJECT token
 at [Source: org.apache.catalina.connector.CoyoteInputStream@68c40ef9; line: 1, column: 1]
Resolving exception from handler [public void sequenziatore.server.presenter.LoginController.CheckLogin(java.util.Vector<sequenziatore.server.presenter.Utente>)]: org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not deserialize instance of java.util.Vector out of START_OBJECT token
 at [Source: org.apache.catalina.connector.CoyoteInputStream@68c40ef9; line: 1, column: 1]; nested exception is org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.Vector out of START_OBJECT token
 at [Source: org.apache.catalina.connector.CoyoteInputStream@68c40ef9; line: 1, column: 1]

И это контроллер, который я использую:

@Controller
@RequestMapping(value = "/login")
public class LoginController {
    @RequestMapping(method=RequestMethod.POST, consumes = "application/json", produces = "application/json")
    @ResponseBody
    public void CheckLogin(@RequestBody Vector<Utente> vec) {
    .....
    }

Я пытался изменить тип, который я получаю с помощью Utente [] вместо Vector, но ничего не изменилось, и настоящая проблема в том, что я не понимаю, в чем ошибка... Это JSON, который я получаю, если я меняю тип получения в String и распечатать...

{"0":{"username":"pippo","password":"bla"},"1":{"username":"pluto","password":"bla"},"2":{"username":"topolino","password":"bla"}}

Это класс Утенте

public class Utente {
    private String username=null;
    private String password=null;

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Utente(){}
}
19.06.2014

  • Токен START_OBJECT — это просто {, поэтому похоже, что Джексон пытается прочитать объекты такими, какими они были Vector. Я не уверен, в чем проблема, но вы можете попробовать перейти на более новую версию github.com/FasterXML /jackson-core 20.06.2014
  • Готово..Ничего не изменилось.... 20.06.2014
  • Проверьте это: stackoverflow.com/questions/4441557/ 20.06.2014
  • @WornOutSoles java.lang.IllegalStateException: нет конструктора по умолчанию для [типа коллекции; class sequenziatore.server.presenter.LoginController$UtenteList, содержит [простой тип, class sequenziatore.server.presenter.Utente]] 20.06.2014
  • Открытый класс @WornOutSoles UtenteList extends ArrayList‹Utente› { UtenteList(){} } Как видите, я создал конструктор по умолчанию.... 20.06.2014
  • @DQuaglio вы пробовали JSON следующим образом: {vec:[{имя пользователя:pippo,пароль:bla},{имя пользователя:pluto,пароль:bla},{имя пользователя:topolino,пароль:bla}]} 02.07.2014

Новые материалы

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..