Servlet如何把json字符串转成为实体类
在开发过程中经常会遇到JSON数据的获取和返回,其中JSON数据与实体类的互转也非常常见,那么我们该如何从jsp中传JSON数据到Serlvet中,然后通过Servlet来获取到JSON数据,再把JSON转换成对应的实体类呢?
首先,在jsp中写一个用ajax提交的方法,其中该方法是已POST提交方法来进行提交,url为servlet的请求路径;data为要提交的内容,内容的四个参数都是json数据,要注意的是要提交json数据必须要用JSON.stringify()方法来JSON字符串化提交;traditonal该参数是阻止jquery对json数组序列化;dataType是设置返回的类型为”text”;contentType该参数主要是设置提交数据类型,其中要一般提交JSON类型都会设置为application/json类型,代码如下:
但在serlvet开发过程中遇到了错误,也就是在Serlvet中用request.getParameter()获取不了json数据,获取到json数据为null,结果如下:
显然,从上面的结果可以看出,用request.getParameter()方法获取的值null,但是后来想了一下,在servlet中获取jsp页面传过来的值,好像就是这么一两种方法,突然觉得不是servlet获取参数方法参数,而是可能在jsp中提交时出现了差错。后来经过了一系列排查,原来是contentType提交数据类型的问题,要把contentType改成“application/x-www-form-urlencoded”才行,代码结果如下:
从上面的结果来看,servlet已经成功获取到jsp传过来的json数据,但是这个json数据还不是我想要的效果,因为该json字符串在取值比较困难,要通过一系列的分割,显然这是不符合实际的,那么该如何处理这个json字符串更容易取值呢?
思路:竟然接收到的是json字符串,有没有办法把该json字符串转成json数据或者对应的实体类呢?
答案是肯定的,首先我们要处理该json字符串就必须要引用相应处理json数据的jar包,本例是引用fastjson-1.2.7.jar,该jar报可以从网上下载,下载完后,引用该jar包:
首先,封装好一个方法jsonToVo(),该方法有两个参数,一个是要转换的json字符串stringJson参数,另外一个是对应的实体类Vo
注意,实体类与json字符串的属性值要一致,否则匹配不上;
然后,在servlet中获取到jsp中传过来的json字符串,调用上面封装好的方法,把获取到的json字符串和对应的实体类传入该方法,其中该方法返回的是List集合,该集合存储了多个实体类,是一个列表,结果如下: