Java Json spring:输出是xml,但我想要Json

Java Json spring:输出是xml,但我想要Json,java,json,xml,spring,spring-mvc,Java,Json,Xml,Spring,Spring Mvc,所有代码都工作正常,但使用代码生成的输出是XML而不是json,有人能帮助我如何从这段代码中获得json格式的输出吗 这是控制器类 package spring; import javax.servlet.http.HttpServletResponse; import javax.xml.bind.annotation.XmlRootElement; import org.springframework.http.HttpStatus; import org.springframewor

所有代码都工作正常,但使用代码生成的输出是XML而不是json,有人能帮助我如何从这段代码中获得json格式的输出吗

这是控制器类

package spring;

import javax.servlet.http.HttpServletResponse;
import javax.xml.bind.annotation.XmlRootElement;

import org.springframework.http.HttpStatus; 
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@RestController

public class Main {

@RequestMapping(value="/main",method = RequestMethod.GET,headers =    {"Accept=text/xml, application/json"},produces = "application/json")
@ResponseBody()
public  ResponseEntity<Student> f()
    {

        Student s=new Student();
        s.setName("Nikesh Joshi");
        s.setAge(21);
        s.setId(1);
        return new ResponseEntity<Student>(s, HttpStatus.OK);
    }
    }
xml具有到SpringFront控制器Dispatchers servlet的简单映射。
输出的XML格式如下所示


使用什么类型的客户端请求您的服务。如果您使用的是浏览器,它会优先于json使用xml(接受:text/html、application/xhtml+xml、application/xml;对于firefox,q=0.9、/;q=0.8)。Spring使用Accept标头进行内容协商。您的服务同时启用了xml和json,因为JAXB和json都位于类路径上

最好的方法是使用请求参数或文件扩展名来影响内容协商,而不是依赖于所有客户端都难以控制的Accept标头。为此,请将以下内容添加到应用程序上下文中

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="true" />
<property name="favorParameter" value="true" />
<property name="mediaTypes" >
<value>
json=application/json
xml=application/xml
</value>
</property>
</bean>

json=应用程序/json
xml=应用程序/xml
要访问xml服务,您可以使用扩展或请求参数

要访问json服务,您可以使用扩展或请求参数


注意。@RequestMapping的products属性不用于内容协商,而是用于缩小处理程序方法的范围

用于请求您的服务的客户端类型。如果您使用的是浏览器,它会优先于json使用xml(接受:text/html、application/xhtml+xml、application/xml;对于firefox,q=0.9、/;q=0.8)。Spring使用Accept标头进行内容协商。您的服务同时启用了xml和json,因为JAXB和json都位于类路径上

最好的方法是使用请求参数或文件扩展名来影响内容协商,而不是依赖于所有客户端都难以控制的Accept标头。为此,请将以下内容添加到应用程序上下文中

<mvc:annotation-driven content-negotiation-manager="contentNegotiationManager" />
<bean id="contentNegotiationManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="true" />
<property name="favorParameter" value="true" />
<property name="mediaTypes" >
<value>
json=application/json
xml=application/xml
</value>
</property>
</bean>

json=应用程序/json
xml=应用程序/xml
要访问xml服务,您可以使用扩展或请求参数

要访问json服务,您可以使用扩展或请求参数


注意。@RequestMapping的products属性不用于内容协商,而是用于缩小处理程序方法的范围

尝试设置响应内容类型:

response.setContentType("application/json");

尝试设置响应内容类型:

response.setContentType("application/json");


您是否尝试过从模型类中删除
@XmlRootElement
注释?通过请求JSON而不是XML。如果我删除根XML,则浏览器上出现406错误您在类路径中是否有jackson/gson或任何此类库要转换为json@nikesh-beans xml文件没有帮助。。正在扫描的spring包中有什么内容??我们需要配置视图解析程序的代码。您是否尝试从模型类中删除
@XmlRootElement
注释?通过请求JSON而不是XML。如果我删除根XML,则浏览器上出现406错误您在类路径中是否有jackson/gson或任何此类库要转换为json@nikesh-beans xml文件没有帮助。。正在扫描的spring包中有什么内容??我们需要配置视图解析器的代码。正在生成错误。是否删除原始mvc:批注驱动元素。请提供您现在遇到的错误的详细信息。您使用的是哪个版本的spring?vc复杂类型。3.2.2:属性“内容协商管理器”不允许出现在元素“mvc:注释驱动”中。。。。。这是我收到的错误,我正在起诉Spring4.1您使用的是mvc命名空间版本3。省略版本号,而使用最新版本,如“>请在netparam.nikesh上发送代码。joshi@gmail.com . 我发现任何mvc命名空间版本都在生成错误。是否删除了原始mvc:注释驱动元素。请提供您现在遇到的错误的详细信息。您使用的是哪个版本的spring?vc复杂类型。3.2.2:属性“内容协商管理器”不允许出现在元素“mvc:注释驱动”中。。。。。这是我收到的错误,我正在起诉Spring4.1您使用的是mvc命名空间版本3。省略版本号,改为使用最新版本,如“>请在netparam.nikesh上发送代码。joshi@gmail.com.I发现任何mvc命名空间版本