为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

2 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

直接用注解
@RestController
publicclassHelloWorldController{
@RequestMapping("/hello")
publicTesttest(){
Testtest=newTest();
test.setId(1);
test.setName("哈哈哈")
returntest;
}
}
这样的返回就是json
                            
查看完整回答
反对 回复 2019-05-23
  • 2 回答
  • 0 关注
  • 987 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信