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依赖:
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层
@Service
public 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返回结果会是怎样呢?