关于springMVC 接收json字符串集合的问题

关于springMVC接收集合的解决方案(一)

目前根据个人经验来说解决springMVC后台接收前段传递json字符串的问题有两种方式:第一种:将json转为字符串传递,第二种:是使用@ResponseBody的方式。这篇文正主要及说明第一种方式。

我们需要用到的GSON jar包,GSON中提供了很方便的json格式化,无论是list集合 Map集合还是实体ben 等等,只要是合法的Object类型均能解析成json字符串,而且GSON库还给我们提供了很方便的json转为相应实体类的方法。下面我会一一介绍。

首先我们说一下springMVC接收前端传递过来的字符串,我们这里新建一个html引入jquery使用ajax的方式模拟post提交数据。具体代码如下

<script type="text/javascript">
		$(document).ready(function() {
			var data1 = {
				"username": "test",
				"password": "gz",
				"books":JSON.stringify([{
					"name":"十万个为什么",
					"page":"111",
					"number":"100"
				}])
			};
			console.info(JSON.stringify(data1))
			$.ajax({
				type: "POST",
				url: "http://localhost:8080/SpringSpringmvcMybatis/login",
				dataType: "json",
				async : true,
				data: data1,
				success: function(data) {
					console.info(data)
				}
			});
		});
	</script>
url根据自己实际项目中的路径而定。

其次我们需要在后台接收传递过去的参数,时间问题,就在原先的工程上直接写了,这都不重要,重要事功能能不能够实现。

	@ResponseBody
	@RequestMapping(value = "/login",method=RequestMethod.POST)
	public ModelAndView login(HttpServletRequest req,UserBean user) {
		ModelAndView mv = new ModelAndView();
		UserBean u = loginServiceImpl.Login(user.getUsername(),
				user.getPassword());
		if (u != null) {
			req.getSession().setAttribute("user", u);
			mv.addObject("password", u.getPassword());
		}
		mv.setViewName("index");
		return mv;
	}


其中UserBean是我们项目中的实体类,为了方便我直接用实体类映射的这种方式
public class UserBean implements Serializable {

	private static final long serialVersionUID = -2682305557890221059L;
	private Integer id;
	private String username;
	private String password;
	private Double account;
	private String books;
       //get set 方法

}

这里面特别要注意的是这个books参数

我们怎么在要用的地方调用呢?我们可以在里面在声明一个变量为  List<book>


在books的set方法里面给这个list<book> 赋值


具体代码如下

public class UserBean implements Serializable {

	private static final long serialVersionUID = -2682305557890221059L;
	private Integer id;
	private String username;
	private String password;
	private Double account;
	private String books;
	private List<book> booklist;
	
	public void setBooks(String books) {
		System.out.println(books);
		Gson gs = new Gson();  
		List<book> jsonListObject = gs.fromJson(books, new TypeToken<List<book>>(){}.getType());//把JSON格式的字符串转为List 
		this.setBooklist(jsonListObject);
		for (book book : jsonListObject) {
			System.out.println(book.getName());
		}
		this.books = books;
	}
     // get set 方法
}

其中book实体类

public class book {
	
	private int id;
	private String name;
	private String page;
        private String number;
       // get set 方法
}

这样我们就获得了一个List<book>集合,这样就很方便的我们像数据库里面插入数据,此时我们就不需要在java代码里面遍历insert插入数据,只需要调用多差查入的 mybaties 当然如果你的工程是springMVC+mybaties的架构的话就很方便的实现了。

对于GSON库我提给给大家一个地址:适合学习 https://github.com/google/gson/ 里面有详细的demo及其说明。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值