ホームページ >Java >&#&チュートリアル >json を返すためにどのようなアノテーションが使用されますか?
返される json には「@ResponseBody」というアノテーションが付けられます。「@ResponseBody」はメソッドに適用されます。「@ResponseBody」は、メソッドの戻り結果が「HTTP レスポンスボディ」に直接書き込まれることを意味します。
#この記事では、JSON リターン アノテーション メソッドを示す 2 つの例を紹介します。
例 1
@ResponseBody はメソッドに作用します。@ResponseBody は、メソッドの戻り結果が HTTP 応答本文に直接書き込まれることを意味し、データは[つまり AJAX] を使用する場合、@RequestMapping を使用した後、通常、戻り値はジャンプ パスとして解析されますが、@ResponseBody を追加すると、戻り値はジャンプ パスとして解析されず、 HTTP 応答本文に直接書き込まれます。たとえば、jsonデータを非同期で取得し、@ResponseBodyを付けると、jsonデータが直接返されます。 @RequestBody 適切な HttpMessageConverter を使用してリクエスト本文をオブジェクトに書き込み、HTTP リクエスト本文をメソッドに挿入します。
次の部分は、Spring-mvc.xml またはdispatcherServlet-servlet.xml にあります (Spring 3.0 では、ServletName-servlet.xml が Spring-mvc.xml に置き換わりました)
<!-- 用于将对象转换为 JSON --> <bean> <property> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> <bean></bean> <bean> <property> <list> <ref></ref> <ref></ref> </list> </property> </bean>
対応するコントローラー内中:
@RequestMapping(value="/login",method=RequestMethod.POST) public @ResponseBody User login(String username,String password){ User user = userService.login(username, password); return user; }
ここでは jackson パッケージを使用します:
(1) jackson-core 2.5.0
(2) jackson-databind 2.5.0
(3)jackson-annotations 2.5.0
インポート後のパスの構築;
警告: Hibernate などの orm ツールによって生成された pojo クラスを使用する場合、1 対 1、 1 対多などの関係は次のようになります。 json の無限ループが出力されます。
pojo クラスに com.fasterxml.jackson.annotation.JsonIgnore をインポートし、 @JsonIgnore アノテーションを追加する必要があります。注釈付きの属性が表示されないように、シールドする必要があるクラスに json で追加します。
例 2
@ResponseBody @RequestMapping(value = "/login") public ModelAndView ajaxLogin(Model model,User user,HttpServletRequest request, HttpSession session){ String errorMessage=loginCommon(model, user, request, session); Map map=new HashMap(); if(ValueWidget.isNullOrEmpty(errorMessage)){ map.put(Constant2.AJAX_LOGIN_RESULT, "success"); }else{ map.put(Constant2.AJAX_LOGIN_RESULT, "failed"); } map.put("error", errorMessage); model.addAttribute("user", null); return new ModelAndView(new MappingJacksonJsonView(),map); }
または
model.addAttribute("user", user1);
操作結果:
以上がjson を返すためにどのようなアノテーションが使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。