ホームページ  >  記事  >  Java  >  json を返すためにどのようなアノテーションが使用されますか?

json を返すためにどのようなアノテーションが使用されますか?

(*-*)浩
(*-*)浩オリジナル
2019-05-18 16:48:455890ブラウズ

返される json には「@ResponseBody」というアノテーションが付けられます。「@ResponseBody」はメソッドに適用されます。「@ResponseBody」は、メソッドの戻り結果が「HTTP レスポンスボディ」に直接書き込まれることを意味します。

json を返すためにどのようなアノテーションが使用されますか?

#この記事では、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 を返すためにどのようなアノテーションが使用されますか?

以上がjson を返すためにどのようなアノテーションが使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。