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返回結果會是怎樣呢?