关闭

Json串与实体的相互转换 (不依赖于jar包 只需Eclipse环境即可)

标签: hibernatestrutsspringjson转换
10736人阅读 评论(0) 收藏 举报
分类:

Json串与实体的相互转换 (不依赖于jar包 只需Eclipse环境即可)
最近学习了javaWeb开发,用的是ssh框架里面自己整合了hibernate 和Struts2 和spring框架,其中就遇到了一个问题–json的转换的问题。考虑到程序的稳定性,我花三天的时间研究json的转换,网上的代码有很多,但是都是依赖于一些写好的jar包,我导入这些jar包后都提示少东西要么就是提示错误所以我就自己手写了一个工具类,使用我的这个工具类就可以直接使用工具进行转换了不需要导入任何jar包。需要的程序员可以看看,代码还有不足的地方还在改进

  • 工具类 JsonConEntity
    • 定义为私有的构造函数 成为单列 方便使用
  • 首先使用到的是拿到json串中实体个数
    • for(int i=0;i<JsonConEntity.getCount(str);i++){
      Module entity=new Module();
      list.add(entity);
      }
  • 这里是getCount方法
    • public static Integer getCount(String json){
      Map<Integer, Map<String, Object>> bigMap = JsonConEntity.getMap(json);
      return bigMap.size();
      }
  • 创建好对应的实体后我们就可以调用核心代码实现了
    • list = JsonConEntity.jsonToEntity2(str, list);
  • 在核心代码里我们首先需要将json串转换到一个集合中,这里我用的是map集合来装取
    • Map<Integer, Map<String, Object>> bigMap = getMap(json);
  • 将数据装到map中之后我们就可以遍历了,在遍历中取到的实际上已经是一个实体的数据了
  • 在得到实体后的方法定义
    • 这里写图片描述
  • 拿到一个实体的map参数数据之后我们还需要对实体的属性进行遍历赋值
    • Field[] fields = tClass.getDeclaredFields();
      for (Field field : fields) {
  • 在这里我们就可以遍历真正的实体中的属性的名称了,然后我们将真正实体中的属性和map集合中对应的实体的属性进行比较从而方便了我们的赋值
  • PropertyDescriptor pd = new PropertyDescriptor(
    field.getName(), tClass);
    // 获得set方法
    Method method = pd.getWriteMethod();
    String str = map.get(key1).toString();
  • 这样我们就可以操作实体中的set方法了,在这里V1.0中没有对实体总的set方法进行判断导致了一个错误 就是导致实体中的所有的属性在你传过来的json中必须要有对应字段值,这样的话很不符合json和实体转换的初衷,所以在V2.0中我解决了这个问题,在哪实体中的set方法前先与json中对应的实体的属性进行比较,json串中没有的就不用在拿实体中的set方法了,json中有的在去实体中拿set方法,然后通过set方法将值传过去,这样就起到了json转换实体的作用了,到这里我的思想也就玩了,同志们还没懂得自己看看我的代码吧,在文章的最后会贴上下载链接的
  • 下面就是实体转换成json串了这个相对简单很多,我们只需要拿到属性然后就行拼接之后就可以了,
  • 使用说明小提示:
    • —–无jar包支持 纯手写代码
      —–要求
      —json格式为 [{},{},…..]或{}
      —在调用此工具类中的实体向json转换的时候实体的所有属性至少必须有get方法 否则无法用此工具类生成json串。在json转换为实体的时候需要将json串中有的属性值必须要有set方法,否则也无法正常的进行转换。
      —在实体转换json时只需要将实体创建好然后进行工具转换就行了
      —在json转换成实体的时候我们麻烦一步,需要向用工具类拿到json串的实体的个数,然后向创建出N个空的实体用来接收json串中的实体,新创建的N的实体我们一次加入到list里面然后将整个list传到json工具类中,最后我们遍历这个list就行了
      —V1.0中我只能解析json串中的整数型不能有引号。 也就是说实体的属性的int型的那么我们的json里面的对应的属性不能有引号。 在V2.0里已经解决了这个问题了

工具类下载链接:
- http://download.csdn.net/detail/u013132051/9524654

5
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

XML与JSON之间的转换 XMLSerializer类实现

XML与JSON之间的转换 XMLSerializer类实现
  • yuxiangaaaaa
  • yuxiangaaaaa
  • 2016-08-28 10:42
  • 3321

使用springMVC注解@ResponseBody与jackson工具类在ajax请求中实现对象与json之间的相互转化

1.springmvc默认使用jackson来实现对象与json之间的相互转换的。在转换之前我需要引入两个springMVC依赖的两个jar包:  jackson-core-asl(jackson核...
  • zhengyang7754
  • zhengyang7754
  • 2017-04-05 15:30
  • 1696

PHP构建不依赖于cookie的手机端用户登录配置,url_rewriter.tags设置

手机端登录网站的问题是一个困扰我很久的问题。总是会有那么一些用户告诉我,他的手机不能登录网站了。要想能有效地解决手机登录的问题,一种方案就 是尽可 能多地模拟出用户的手机端环境出来,针对这些具体的...
  • xmlife
  • xmlife
  • 2013-08-09 09:10
  • 1055

不依赖于Activity的全局对话框的实现

实现不依赖于Activity的全局对话框有三种方式:第一个方法利用系统弹出dialog在alter.show()语句前加入:alert.getWindow().setType(WindowManage...
  • hp910315
  • hp910315
  • 2015-12-10 22:24
  • 3559

只能在有限的一些情形下使用 volatile 变量替代锁。要使 volatile 变量提供理想的线程安全,必须同时满足下面两个条件:1对变量的写操作不依赖于当前值。 2该变量没有包含在具有其他

Java™ 语言包含两种内在的同步机制:同步块(或方法)和 volatile 变量。这两种机制的提出都是为了实现代码线程的安全性。其中 Volatile 变量的同步性较差(但有时它更简单并且开销更低)...
  • hzw05103020
  • hzw05103020
  • 2015-07-25 09:05
  • 352

log4j的单独使用(不依赖于web容器)

log4j是可以单独使用的,也可以在web框架中使用,这里先介绍log4j的单独使用。
  • chen270310978
  • chen270310978
  • 2016-10-25 11:07
  • 145

【POI】导出excel(不依赖于框架)

使用的是spring mvc 1.首先配置需要的jar包(使用的是POI报表) org.apache.poi poi ...
  • lihuapiao
  • lihuapiao
  • 2015-10-26 16:17
  • 372

Maven执行Main方法(不依赖于classpath)及依赖查看(三)

Maven运行Main方法                 在Maven使用入门(二)提供了生成含有MainClass类信息的Jar包的方法,用户...
  • qian_348840260
  • qian_348840260
  • 2012-03-29 17:49
  • 4038

自定义不依赖于Activity的Toast

/** * 自定义Toast类 * Created by Administrator on 16-11-28. */ public class Tast { //挂载的View ...
  • github_36615485
  • github_36615485
  • 2016-11-28 11:10
  • 300

构建不依赖于cookie的手机端用户登录机制

本文永久链接:http://comdeng.com/blog/article/10023.html 手机端登录网站的问题是一个困扰我很久的问题。总是会有那么一些用户告诉我,他的手机不...
  • pestd
  • pestd
  • 2011-10-21 16:50
  • 488
    个人资料
    • 访问:796111次
    • 积分:7104
    • 等级:
    • 排名:第3724名
    • 原创:88篇
    • 转载:1篇
    • 译文:0篇
    • 评论:110条
    博客专栏
    最新评论
    百度统计