Heim >Java >javaLernprogramm >Welche Anmerkungen werden verwendet, um JSON zurückzugeben?

Welche Anmerkungen werden verwendet, um JSON zurückzugeben?

(*-*)浩
(*-*)浩Original
2019-05-18 16:48:455982Durchsuche

Der zurückgegebene JSON wird mit „@ResponseBody“ annotiert. „@ResponseBody“ wird auf die Methode angewendet. „@ResponseBody“ bedeutet, dass das Rückgabeergebnis der Methode direkt in den „HTTP-Antworttext“ geschrieben wird.

Welche Anmerkungen werden verwendet, um JSON zurückzugeben?

In diesem Artikel werden zwei Beispiele vorgestellt, um die JSON-Rückgabeanmerkungsmethode zu demonstrieren.

Beispiel 1

@ResponseBody wirkt auf die Methode @ResponseBody bedeutet, dass das Rückgabeergebnis der Methode direkt in den HTTP-Antworttext geschrieben wird Bei Verwendung von [d. h. AJAX] wird der Rückgabewert nach der Verwendung von @RequestMapping normalerweise als Sprungpfad analysiert. Nach dem Hinzufügen von @ResponseBody wird das Rückgabeergebnis jedoch nicht als Sprungpfad analysiert direkt in den HTTP-Antworttext geschrieben. Wenn Sie beispielsweise JSON-Daten asynchron abrufen und @ResponseBody hinzufügen, werden die JSON-Daten direkt zurückgegeben. @RequestBody Fügt den HTTP-Anfragetext in die Methode ein und verwendet einen geeigneten HttpMessageConverter, um den Anfragetext in ein Objekt zu schreiben.

Die folgenden Teile befinden sich in Spring-mvc.xml oder DispatcherServlet-servlet.xml (ServletName-servlet.xml ersetzt Spring-mvc.xml in 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>

im entsprechenden Controller Medium:

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

Hier verwende ich das Jackson-Paket:

(1) jackson-core 2.5.0

(2) jackson-databind 2.5.0

(3) jackson-annotations 2.5.0

Pfad nach dem Import erstellen;

Warnung: Wenn Sie die von Orm-Tools wie Hibernate, One-to-One, Eins-zu-viele-Beziehungen usw. können sein. Es wird eine Endlosschleife von JSON ausgegeben:

Sie müssen com.fasterxml.jackson.annotation.JsonIgnore in die Pojo-Klasse importieren und die Annotation @JsonIgnore hinzufügen zur Klasse, die abgeschirmt werden muss, damit die annotierten Attribute nicht in JSON angezeigt werden.

Beispiel 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);  
    }

oder

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

Laufergebnisse:

Welche Anmerkungen werden verwendet, um JSON zurückzugeben?

Das obige ist der detaillierte Inhalt vonWelche Anmerkungen werden verwendet, um JSON zurückzugeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn