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

标签: hibernate struts spring json转换
10898人阅读 评论(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

查看评论

Eclipse之JSON导包

json导包 1.选中要导包的工程—–>2.右击选择创建文件夹——->3.将要导的包复制到该文件夹下——–>4.右击要导入的包——>5.选择Build path—>Add to Build Path1...
  • baidu_37107022
  • baidu_37107022
  • 2017-04-27 19:37:41
  • 2080

eclipse 自动生成json格式的toString()方法

关键在这里点edit将下面的内容复制到文本框内,即可生成的代码即json格式的{"${member.name()}":"${member.value}", "${otherMembers}"} 若对象...
  • proud2005
  • proud2005
  • 2013-02-27 12:53:16
  • 4487

Maven项目使用JSON需要的依赖包

今天下午在Maven项目中使用JSON的时候遇到了很多问题,一开始引入包就直接百度,也没注意POM.XML中的错误,然后就开始写代码,害得我认为是我的代码写错了,弄了一下午,百度也没有比较全的依赖包的...
  • a937545721
  • a937545721
  • 2017-11-29 17:26:14
  • 2396

JSONObject对象依赖的jar包

转自:http://blog.csdn.net/u012990533/article/details/39803725 在web项目中经常会用到json数据(如:struts2处理请求返回j...
  • xiao1542375620
  • xiao1542375620
  • 2016-10-21 14:43:19
  • 21613

JSONObject所需的6个依赖jar包

  • 2017年09月26日 13:11
  • 1.72MB
  • 下载

JSONObject相关依赖架包下载(Maven依赖下载)

一、开发场景Java开发当中经常需要Json格式的数据,这就用到JSONObject类,本文章只提供以下两种JSONObject对应架包的下载方式。1、com.alibaba.fastjson.JSO...
  • JustinQin
  • JustinQin
  • 2017-12-14 10:00:58
  • 4398

JSONObject依赖包

1.commons-lang.jar ; 2.commons-beanutils.jar  ; 3.commons-collections.jar  ;  4.commons-logging.jar ...
  • u010173059
  • u010173059
  • 2017-03-02 00:59:41
  • 130

java中json解析转换需要的jar包和依赖包

  • 2017年11月21日 10:24
  • 1.2MB
  • 下载

JSON包常用的方法

import net.sf.json.JSONObject;public class ToBeanTest { public static void main(String[] args) { ...
  • u012750283
  • u012750283
  • 2016-04-02 13:39:34
  • 3022
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 83万+
    积分: 7360
    排名: 3772
    博客专栏
    最新评论