Gson解决前端多层数据封装与后台Controller层数据接收

问题描述:工作上遇到了一个小问题,前端页面用的是一个大对象,封装了4个数组,每个数组里又放了不同的对象。然后后端Controller也是按同样的层次结构和属性名称接收的,但就是接收不到数据。

例子:

前端JS代码

var user={};
var imageArray = [];
var textArray = new Array();

$("*[name=img_url]").each(function (i, n) {
   var _obj = $(this);
   var img_url = _obj.val();
   if (img_url!=""&&img_url!=null) {
      var ImageVo ={};
      ImageVo.imageurl=img_url;
      imageArray.push(ImageVo);
   }
 });

$("*[name=text]").each(function (i, n) {
   var _obj = $(this);
   var textInfo= _obj.val();
   if (text!=""&&text!=null) {
      var textVo ={};
      textVo .text=textInfo;
      textArray .push(textVo);
   }
});

user.images  = imageArray;
user.texts  = imageArray;
var jsonData = {
   "user":user
};
$.ajax({
   type : "post",
   url: "/test",
   dataType:"json",
   cache:false,
   async:false,
   data: "use="+JSON.stringify(user),
   success:function(data){
      代码逻辑...
   }
});

后台是这样接收的:

VO类:

public class UserVo {
    private  List<ImageVo> images = new ArrayList<ImageVo>();
    private  List<TextVo> texts = new ArrayList<TextVo>();
    
    此处省略了get/set方法
}
public class ImageVo {
    private String imageurl;

     此处省略了get/set方法
}
public class TexteVo {
    private String text;

     此处省略了get/set方法
}

Controller:

@RequestMapping(value = "/test", method = RequestMethod.POST)
public @ResponseBody Map<String, Object>test(String user) {
   Gson gson = new Gson();
   Use user = gson.fromJson(user,
         new TypeToken<UserVo>() {
         }.getType());
}

总结:前端现将数据转换成JSON,传到后台,然后通过Gson再将JSON转回对应的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值