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

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

  1. json学习系列(1)-使用json所要用到的jar包下载

    内容来源于互联网. json是个非常重要的数据结构,在web开发中应用十分广泛.每个开发者都应该好好的去研究一下json的底层实现.在使用json之前首先要明白需要哪些jar文件,初次使用的时候很容易 ...

  2. (1)-使用json所要用到的jar包下载

    json是个非常重要的数据结构,在web开发中应用十分广泛.我觉得每个人都应该好好的去研究一下json的底层实现,需要准备下面的六个jar包:commons-lang-1.0.4.jar common ...

  3. json教程系列(1)-使用json所要用到的jar包下载

    json是个非常重要的数据结构,在web开发中应用十分广泛.我觉得每个人都应该好好的去研究一下json的底层实现,基于这样的认识,金丝燕网推出了一个关于json的系列教程,分析一下json的相关内容, ...

  4. 【jar包】Android——eclipse共享library以及导出jar包

    android的apk在在eclipse上进行开发的时候,有时候需要import其它包中的一些class,正常的方法就是在java build path中library 中添加 jar 包! 转载注明 ...

  5. AndroidStudio中安装可自动生成json实体类的jar包

    第一步:安装gsonjar包, 这样gson包就下载好了.接下来安装能自动生成实体类的插件: 接下来不要忘了重启: 重启后,就可以通过自定义的快捷键 alt+shift+s来打开generate,从而 ...

  6. 如何把一个jar包导入到eclipse中

  7. 1、在eclipse中导入Java的jar包方法---JDBC【图文说明】

    1.Eclipse环境下jar包导入 在Eclipse环境下编写Java程序,常常会借用到各种jar包.如:连接数据库时,导入jar包是必须的.导入方法如下: 1.打开eclipse,右击要导入jar ...

  8. 常见 jar包详解

        常见 jar包详解 jar包 用途 axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现.查找和实现可插入式接口,提供一些一般类实例化.单件的生命周期 ...

  9. java开发常用jar包

    mail.jar与activation.jar 里面包含了activation.jar和mail.jar两个包.通过里面的类的调用便可以达到发送电子邮件的目的 commons-beanutils.ja ...

随机推荐

  1. find文件删除

    find /root/title/test -type f -name '*.txt' -exec rm {} \;   查找并删除test文件夹下所有txt文件 find /root/title/t ...

  2. 研究Electron主进程、渲染进程、webview之间的通讯

    背景 由于某个Electron应用,需要主进程.渲染进程.webview之间能够互相通讯. 不过因为Electron仅提供了主进程与渲染进程的通讯,没有渲染进程之间或渲染进程与webview之间通讯的 ...

  3. idea下maven命令打包不同配置

    1. 场景描述 不知道大家有没有遇到过?Idea集成的maven,在切换不同环境配置的时候,有时候反应很慢,还存在切换后打包还是原配置的情况. 2. 问题解决 通过在idea下执行maven命令进行切 ...

  4. 盘一盘 System.out.println()

    System.out.println("Hello World")是大部分程序员入门的第一行代码,也可以说是程序员们最熟悉的一行代码.大家真的深入研究过System.out.pri ...

  5. [原创]自动化部署K8S(v1.10.11)集群

          标准运维实现自动化部署K8S集群主要分两步,第一步是部署gse-agent,拱第二步执行部署. 第一步:部署gse-agent.如下: 第二步:部署k8s集群.主要通过作业平台分为5小步执 ...

  6. java高并发系列 - 第14天:JUC中的LockSupport工具类,必备技能

    这是java高并发系列第14篇文章. 本文主要内容: 讲解3种让线程等待和唤醒的方法,每种方法配合具体的示例 介绍LockSupport主要用法 对比3种方式,了解他们之间的区别 LockSuppor ...

  7. Day1 -Python program

    采用python 3.5 用PyCharm编译 第一串代码 print ("hello,world!") 练习1 输入一个用户名和密码,如果输入正确,就欢迎登陆,否则就显示错误. ...

  8. 个人永久性免费-Excel催化剂功能第97波-快递单号批量查询物流信息

    电商时代,快递已进千万家,做电商零售行业的,快递信息的再挖掘,也显得更有意义,是数据精细化运营中必不可少的一环.一般站在系统的角度,数据用于业务流转的增删改查使用,而对于分析需求来说,这些业务系统里集 ...

  9. CentOS下搭建Git服务器(基于SSH协议)

    1,安装Git所需依赖包      # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel      # ...

  10. C语言入门7-程序设计方法基础-循环结构

    程序设计方法基础-循环结构 循环三要素: 初值   循环判断条件   步长(循环增量) 循环结构在有些书籍上也称为重复结构,  即反复执行某一部分的操作. 循环三要素: 初值   循环判断条件   步 ...