不使用@ResponseBody注解返回json数据给前台

项目中用Spring的时候,大都是后端返回json数据给前端,现在我有个需求是要把对象装换位json的同时,json的key要转换为中文的,看了资料,发现Spring使用的@ResponseBody可以通过jackson的@JsonProperty 注解,把属性名称序列化为另外一个名称(SpringMVC默认使用的是jackson),比如

@JsonProperty("总数") public int total; 

这样输出json的时候就是{“总数”:100} 了 ,而不是 {“total”:100}

用这个不知道什么原因,对List里的对象数据没起作用,换了种思路

首先想到了不用@ResponseBody,自己转换json, 这样就可以用Gson或者fastJson这一类的json工具了,我用的是Gson

@RequestMapping(value="/list", method=RequestMethod.GET)
//@ResponseBody
public void productlist(@ModelAttribute @Valid Param param,HttpServletResponse response)
 throws IOException {
    int total = service.getProductTotalById(param.id);
    ProductListResult result = new ProductListCnResult(ErrorCode.SUCCESS, total);
      if(total > 0){
         result.list = productService.findProductByFeedId(param.feed_id);
      }
      //让浏览器用utf8来解析返回的数据
      response.setHeader("Content-type", "text/html;charset=UTF-8");
      //告诉servlet用UTF-8转码,而不是用默认的ISO8859
      response.setCharacterEncoding("UTF-8");
      //不需要返回值
      response.getWriter().write(result.toString());
   }
}

返回对象的实体类用@SerializedName("xxx") 转换即可
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值