猿问

Spring MVC 中如何自定义 Gson 的消息转换器?

在SpringMVC中通过配置Gson的消息转换器可以使Controller层直接返回对象而非手动去转换对象为json字符串之后再返回。
text/plain;charset=UTF-8
text/html;charset=UTF-8
text/plain;charset=UTF-8
application/json;charset=UTF-8
Java中的代码也很简洁,类似于下面那的代码:
@RequestMapping(path="/getUserInfoPageByParam")
@ResponseBody
publicJsonResultgetUserInfoPageByParam(){
//获取数据并直接返回,由GsonHttpMessageConverter在后台进行转换包装成json字符串
returnjsonResult;
}
但是Gson默认的转换会把Java中的long/Long类型的数据转换为JavaScript中的Number类型,这看起来没什么问题的转换却会造成一个麻烦,就是Java和JavaScript的数值类型最大值不同。Java中Long最大值在JavaScript会出现溢出的行为,然后就造成了大整数精度丢失。例如396193654462615552到JavaScript中之后会变成396193654462615550,现在吾辈只能手动转换对象,将Long都包装成字符串类型然后传到页面,Controller里面是类似于下面的代码:
@RequestMapping(path="/getUserInfoPageByParam")
@ResponseBody
publicStringgetUserInfoPageByParam(){
//获取数据并存到jsonResult中
returnGsonUtil.gsonToString(jsonResult);
}
现在这样暂时能用,但这样的代码太丑了点,有没有什么办法能够做到类似于第一种直接返回对象不用手动转换的方法呢?(前提是把Long的大数字溢出解决掉呀)
MYYA
浏览 988回答 2
2回答

互换的青春

直接用注解@RestControllerpublicclassHelloWorldController{@RequestMapping("/hello")publicTesttest(){Testtest=newTest();test.setId(1);test.setName("哈哈哈")returntest;}}这样的返回就是json
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答