SpringMVC Json格式输出

来源:互联网 发布:下载放大镜软件 编辑:程序博客网 时间:2024/05/16 12:27

SpringMVC Json格式输出

实现目标:controller层,方法返回javabean自动以json格式输出javabean。
本文Json格式输出使用jackson框架。


jackson依赖jar:

  • jackson-core-2.3.3.jar
  • jackson-databind-2.3.3.jar
  • jackson-annotations-2.3.0.jar

jackson Maven依赖:

jackson Maven依赖配置


Spring JSON视图解析配置:

这里写图片描述


代码清单

Controller层

@Controller@RequestMapping("gateway")public class DispatcherController {    @Autowired    private IDispatcherService dispatcherservice;    /**     * 服务调度     * @param version     * @return     */    @RequestMapping("")    public BasicResponse excute(String method){        //执行方法,获得响应对象         //PS:测试方法,因此传NULL值。接口实现会返回响应对象。        BasicResponse response = dispatcherservice.excute(null);        return response;    }}

Service层

@Servicepublic class PayServiceImpl implements IDispatcherService {    private static Logger log = Logger.getLogger(PayServiceImpl.class);    public BasicResponse excute(BasicRequest request) {        log.info("请求支付了");        return new PayResponse();    }}

javabean

public abstract class BasicResponse {    private String code;    @JsonProperty("err_msg")    private String msg;    public String getCode() {        return code;    }    public void setCode(String code) {        this.code = code;    }    public String getMsg() {        return msg;    }    public void setMsg(String msg) {        this.msg = msg;    }}

使用浏览器请求:http://locahost:8080/test/gateway
返回结果如下:

{“basicResponse”:{“code”:”00”,”err_msg”:”支付成功了”}}

至此我们的实现目标已基本实现,为什么是基本呢?因为这个结果还不是我想要的。我想要的结果是:

{“code”:”00”,”err_msg”:”支付成功了”}

其实实现这个效果也不难只需要修改下Spring的xml配置就好啦

<mvc:view-resolvers>        <mvc:content-negotiation>            <mvc:default-views>                <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView">                    <property name="extractValueFromSingleKeyModel">                        <value>true</value>                    </property>                </bean>            </mvc:default-views>        </mvc:content-negotiation></mvc:view-resolvers>

怎么样简单吧。
下一个课题:如果javabean嵌套javabean返回结果会是怎样呢?

0 0
原创粉丝点击