啥也不说这就是工具 和上边的XML和实体类之间的相互转换一样,用就完事了。但是这就是初级程序员的想法,应该是知其然,然后知其所以然。想的稍微多一些,实现的方式多种多样,看看 你喜欢用哪个
实体类:
public class jsonToBean { private String a; private String b; private String c;set/get/toString/空构造器自己写 }
业务:
packagecn.abchinalife.pos.ploicyQueryFirstPage.controller.JsonUtil;importnet.sf.json.JSONObject;public class AAA {publicstaticvoidmain(String[]args){ JSONObject object = new JSONObject(); object.put(“a”,”aaaa”); object.put(“b”,”bbbb”); object.put(“c”,”cccc”); /** * 将json数据转换为对应的实体类*/ jsonToBean jsonToBean = (jsonToBean) JSONObject.toBean(object, jsonToBean.class); System.out.println(“lnPosPloicyDetail\n” jsonToBean.toString()); }}
是不感觉简单,但是上述是最为简单的方式但是在设计到集合list等形式就不行了,我们在前端的时候通常来的post类型的请求都是json格式当然springmvc会自动给我们进行转换为我们创建的实体类,案例 如下
前端代码
<div> <div id=”touxiang” > <img src=”/static/image/defaule.jpg” style=”width: 100px ;height: 100px;”> </div> <form action=”/register” method=”post” enctype=”multipart/form-data”> 用户姓名<input type=”text” value=”” name=”name”> <br> 用户密码<input type=”text” value=”” name=”password”> <br> 用户头像<input type=”file” value=”” name=”fil” id=”image” onchange=”showPhoto()”> <br> <input type=”submit” value=”注册”> </form></div>
后端代码
/** * 进行用户信息新增(单个) * @param userRegist 注册用户信息 * @param fil 接收图片 * @param request 获取客户机信息 * @return */ @RequestMapping(“/register”) public String userRegist(User userRegist, MultipartFile fil, HttpServletRequest request) { return userService.insertUser1( userRegist, fil, request); }
User.class
public class User { private int id; private String name; private String password;//用户姓名 private String path; private String historyPath;
这里springmvc会自动自动进行转换将我们的前端传来的form中对的json数据转换为实体类,这里需要注意的是前端传来的json中的name属性和实体类中的属性名意义对应如 password
这里的MultipartFile 是用来接收前端传来的图片数据HttpServletRequest 用来接收客户端的一些数据如:
等,这个更具情况进行使用,看具体的业务需求。我现在的项目中基本上也就这三个还有就是
HttpServletResponse:
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。
请求响应流程如下:
上述就是两个类,这两个类中存在很多的请求,自行可以进行百度查询,我就不复制粘贴了
这里进行整理一个为我之前项目中遇到的一个问题:
业务:
前端传来数据格式如下
{“edorType”:”A”,”data”:”一堆数据”}
根据type中的类型转换为不同的实体类:
前端:——就是发送一堆json数据肯定是post请求什么方式随意是ajax或者是表单都可以
后端:——-
pom.xml
<!– json,xml互转jar包开始 –><dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <classifier>jdk15</classifier></dependency>import net.sf.json.JSONObject; @RequestMapping(value = “/transBean”, method = RequestMethod.POST) @ResponseBodypublicRestEntityploicyComputing(@RequestBodyJSONObjectobject){StringedorType=(String)object.get(“edorType”); if(“A”.equals(edorType)){ /** * 将json数据转换为对应的实体类*/ Map<String, Class<?>> classMap = new HashMap<String, Class<?>>(); classMap.put(“headBankCode”, HeadBankCode.class); classMap.put(“selectPhone”,String.class); LNPosPloicyDetail lnPosPloicyDetail = (LNPosPloicyDetail)JSONObject.toBean((JSONObject) object.get(“data”), LNPosPloicyDetail.class, classMap);System.out.println(“lnPosPloicyDetail\n” lnPosPloicyDetail.toString());
注:LNPosPloicyDetail 是一个实体类
Map<String, Class<?>> classMap = new HashMap<String, Class<?>>(); classMap.put(“headBankCode”, HeadBankCode.class); classMap.put(“selectPhone”,String.class);
这个的作用是什么呢:
主要是LNPosPloicyDetail 类中存在几个属性这些属性是list类型,数据结构相对来讲较为复杂,使用上述的方式使得数据转换成实体类而不报异常,这里常报出的异常大致是数据太过于复杂不能转换,其中headBankCode是LNPosPloicyDetail 的属性这个属性是list类型的几个这个属性的泛型是HeadBankCode类
同理selectPhone也是一个list集合其属性是String类型
类似就是这样别的都没啥了,这是我项目中遇到的。若是有什么疏漏,还得请大家多多交流: