json转list对象集合(jsonobject转实体类)

啥也不说这就是工具 和上边的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 用来接收客户端的一些数据如:

json转list对象集合(jsonobject转实体类)

等,这个更具情况进行使用,看具体的业务需求。我现在的项目中基本上也就这三个还有就是

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类型

类似就是这样别的都没啥了,这是我项目中遇到的。若是有什么疏漏,还得请大家多多交流:

发表评论

登录后才能评论