Отдача JSON со SPRING MVC

faoxis

В spring boot есть такая замечательная штука для отдачи JSON'ов с автоматическим вытягиванием его из класса:

@RestController
public class TaskController {

    private DBService dbService = new DBService();

    @RequestMapping(value = "/tasks")
    @CrossOrigin
    public @ResponseBody List<taskdataset> tasks() {
        try {
            List<taskdataset> tasks = dbService.getAllTasks();
            return tasks;
        } catch (DBException e) {
            System.out.println(e);
            e.printStackTrace();
        }
        return null;
    }
}
</taskdataset></taskdataset>

Если скормить этот код spring mvc, то получается следующая ошибка:

HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.ArrayList

Как мне сделать тоже самое в spring mvc правильно ?

2 ответа

faoxis

Додайте зависимость в проект если у вас сборщик maven или соответствующее для gradle

<dependency>
    <groupid>com.fasterxml.jackson.core</groupid>
    <artifactid>jackson-databind</artifactid>
    <version>2.5.0</version>
</dependency>


faoxis

Судя по описанию ошибки spring не может найти конвертер для маршалинга в json.

Чтобы исправить ошибку нужно:

  • либо подключить его отдельно, как описал в своем ответе @BogdanK,

  • либо добавить spring зависимость:

    <dependency>
       <groupid>org.springframework.boot</groupid>
       <artifactid>spring-boot-starter-web</artifactid>
       <version>1.3.3.RELEASE</version>
    </dependency>

Контроллер должен выглядеть так:

@RestController
@RequestMapping("/")
public class MyController {

   @RequestMapping(value = "check", method = RequestMethod.GET)
   public List<simple> check() {
      List<simple> result = new ArrayList<>();
      result.add(new Simple());
      return result;
   }
}
</simple></simple>

А модель:

@JsonAutoDetect
public class Simple {
    private int value;
}

licensed under cc by-sa 3.0 with attribution.