2016-01-16 3 views
0

У меня есть очень простой объект, который я хочу, чтобы вернуться в формате JSONВозврат POJO в формате JSON в Spring MVC 4

public class Event { 

    private String store; 
    private Date date; 
    private double fee; 
    private String kit; 
    private String information; 

и контроллер теста следующего

@RestController 
@EnableWebMvc 
public class UserController { 

    @RequestMapping(value = "/user/{username}", method = RequestMethod.GET, produces = "application/json", headers="Accept=*/*") 
    @ResponseBody 
    public Event getUser(@PathVariable("username") String username){ 

     Event event = new Event("dummy", new Date(), 4.0, "dummy", "dummy"); 
     return event; 
    } 

} 

я получаю «Ресурс идентифицированный этим запросом, способен генерировать ответы с характеристиками, неприемлемыми в соответствии с заголовками запроса «принять».

Мой сервлет имеет только эта запись

<mvc:annotation-driven />  

Как я могу достичь желаемых результатов?

+1

Кажется, вам не хватает сериализатора json на вашем пути к классу? – Marcinek

+0

@ Маркинек Да, действительно. Мне нужно было импортировать Джексона. – Rentonie

ответ

2

Добавлено

dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-annotations</artifactId> 
     <version>2.7.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-core</artifactId> 
     <version>2.7.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.7.0</version> 
    </dependency> 
+0

... а потом что случилось? – kryger

+0

Чтобы использовать неявную сериализацию для json, вам нужен соответствующий json-сериализатор. Он добавил один к своему пути к классу, и он сработал;) – Marcinek

-1

Моя угадать его проблемы с переговорами контента. Каково значение заголовка «Принять» в запросе? Возможно, он установлен в нечто иное, чем «applcation/json», но из-за значения «Accept» заголовка «* / *» этот метод контроллера все еще зарегистрирован как обработчик запросов. Например «Accept: text/xml»;

Другая вещь, я предлагаю вам попробовать вернуть ResponseEntity вместо Event. Он преобразует ваш ответ с помощью HttpMessageConverters (по умолчанию gson используется в качестве парсера для содержимого типа json, если Jackson существует в вашем пути класса, он будет использоваться вместо этого). Вы можете прочитать больше here

+0

Это скорее комментарий, чем ответ. Кроме того, ТО уже ответил на свой вопрос. – Marcinek

Смежные вопросы