Maison > Java > javaDidacticiel > Quelles annotations sont utilisées pour renvoyer json ?

Quelles annotations sont utilisées pour renvoyer json ?

(*-*)浩
Libérer: 2020-09-18 09:35:13
original
5988 Les gens l'ont consulté

Le json renvoyé est annoté avec "@ResponseBody". "@ResponseBody" est appliqué à la méthode "@ResponseBody" signifie que le résultat de retour de la méthode est directement écrit dans le "corps de la réponse HTTP".

Quelles annotations sont utilisées pour renvoyer json ?

Cet article présentera deux exemples pour démontrer la méthode d'annotation de retour JSON.

Exemple 1

@ResponseBody agit sur la méthode @ResponseBody signifie que le résultat de retour de la méthode est directement écrit dans le corps de la réponse HTTP et que les données sont. généralement obtenu de manière asynchrone lors de l'utilisation de [c'est-à-dire AJAX], après avoir utilisé @RequestMapping, la valeur de retour est généralement analysée comme un chemin de saut, mais après avoir ajouté @ResponseBody, le résultat renvoyé ne sera pas analysé comme un chemin de saut, mais le sera. écrit directement dans le corps de la réponse HTTP. Par exemple, si vous obtenez des données json de manière asynchrone et ajoutez @ResponseBody, les données json seront renvoyées directement. @RequestBody Insère le corps de la requête HTTP dans la méthode, en utilisant un HttpMessageConverter approprié pour écrire le corps de la requête dans un objet.

Les parties suivantes se trouvent dans Spring-mvc.xml ou dispatcherServlet-servlet.xml (ServletName-servlet.xml a remplacé Spring-mvc.xml dans Spring 3.0)

<!-- 用于将对象转换为 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>
Copier après la connexion

dans le contrôleur correspondant Medium :

@RequestMapping(value="/login",method=RequestMethod.POST)
    public @ResponseBody User login(String username,String password){
        User user = userService.login(username, password);
        return user;
    }
Copier après la connexion

Ici, j'utilise le package jackson :

(1) jackson-core 2.5.0

(2) jackson-databind 2.5.0

(3) jackson-annotations 2.5.0

Chemin de construction après importation ;

Attention : Si vous utilisez la classe pojo générée par les outils orm tels que hibernate, one-to-one, les relations un-à-plusieurs, etc. peuvent être Une boucle infinie de json sera générée :

Vous devez importer com.fasterxml.jackson.annotation.JsonIgnore dans la classe pojo et ajouter l'annotation @JsonIgnore à la classe qui doit être protégée, afin que les attributs annotés n'apparaissent pas dans json.

Exemple 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);  
    }
Copier après la connexion

ou

model.addAttribute("user", user1); >

Résultats d'exécution :

Quelles annotations sont utilisées pour renvoyer json ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal