2014-10-24 8 views
0

Я попытался сгенерировать ответ json раньше, используя spring-mvc (annotation). После такого провала я мая выяснить некоторые КПП:Генерация json с использованием spring-mvc

  1. Мне нужно добавить <mvc:annotation-driven/> в моем servelet картографа. хотя я не знаю причины.

  2. Затем мне нужно добавить @ResponseBody аннотацию, которая должна связать возвращаемое значение как ответ http, как говорит documentation.

  3. И мне также нужно добавить зависимость jacson.

Я что-то пропустил? Теперь у меня есть куча вопросов

  1. почему мы должны добавить, что в моем servelet XML и как весь этот процесс работает?
  2. Как json Ответ наиболее часто используется, когда зачем нужна весна jackson зависимость для генерации json?

несколько дней назад я делал Struts2 генерация ответа json там было очень просто.

  1. Есть ли способ сделать это легче весной-mvc.?

ответ

1

Сначала вы должны понимать, что аннотация, используемая во многих случаях, не только для генерации ответа json весной. Эта аннотация позволяет использовать различные аннотации в весенних mvc-классах: @NumberFormat @DateFormat @Controller @Valid и, конечно, @ResponseBody. Чтобы генерировать json-ответ, вам просто нужно указать @ResponseBody аннотации в ваш контроллер или сервлет и импортировать библиотеки для обработки JSON. Недавно java имеет набор API-интерфейсов для обработки JSON в составе Java EE 7 JSR 353 на самом деле он имеет чистый Oracle tutorial. Также вы можете использовать сторонние библиотеки, такие как Jackson. Чтобы обрабатывать (анализировать, генерировать, преобразовывать и запрашивать) текст JSON, обязательно иметь одну из этих библиотек. Вы можете узнать о наиболее популярных сторонних библиотеках и их характеристиках в this article

Here вы можете увидеть простой пример.

+0

без этого тега '' вся аннотированная часть моего приложения хорошо работает, кроме json part. – Saif

+0

@Sarif обновил мой ответ – njjnex

+0

Я понимаю это ... но почему на самом деле мне нужен «Джексон»? есть ли способ избежать этого.? – Saif

1

Если вы используете jacson вы можете сделать что-то вроде:

Ваша модель

public class Shop {  
    String name;  
    String staffName[]; 
} 

Ваш контроллер @Controller @RequestMapping ("/ магазин/список") общественный класс JSONController {

@RequestMapping(value="{name}", method = RequestMethod.GET) 
public @ResponseBody Shop getShopInJSON(@PathVariable String name) { 

    Shop shop = new Shop(); 
    shop.setName(name); 
    shop.setStaffName(new String[]{"mkyong1", "mkyong2"}); 

    return shop; 
} 

}

MVC-диспетчерский-servlet.xml

<context:component-scan base-package="com.example.mypackage" /> 
<mvc:annotation-driven /> 

В принципе, вам нужно проверить, если: Ваша библиотека Джексона существует в проекте

классам

MVC: аннотация -driven включен

Метод возврата, аннотированный с помощью @ResponseBody

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