您的位置:首页 > Web前端

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

2017-04-03 00:00 295 查看
问题描述:工作上遇到了一个小问题,前端页面用的是一个大对象,封装了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转回对应的对象
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐