首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

您必须掌握的Java基础:JSON解析工具-json-lib

2013-09-07 
你必须掌握的Java基础:JSON解析工具-json-libjson-lib是一个Java类库,提供将Java对象,包括beans,maps,coll

你必须掌握的Java基础:JSON解析工具-json-lib

json-lib是一个Java类库,提供将Java对象,包括beans,maps,collections,java arrays和xml等转换成JSON,或者反向转换的功能。 

二、准备 

在使用json-lib之前,我们应该到官方网址下载如下包: 

  • jakarta commons-lang 2.5 

  • jakarta commons-beanutils 1.8.0 

  • jakarta commons-collections 3.2.1 

  • jakarta commons-logging 1.1.1 

  • ezmorph 1.0.6 

    并将这些jar包引入到Eclipse项目当中,即可调用。 

    三、讲解 

    在进行下面的代码演示之前,我们先将几个基本的类介绍一下:

     

    3.将一般的数组转换成JSON 

    6.将普通类型的JSON字符串转换成JSON 

    8.将复合类型的JSON字符串转换成复合对象,包含Map 

    public static void testJSONToBeanHavaMap() {     // 把Map看成一个对象     String json = "{list:[{name:\"test1\"},{name:\"test2\"}],map:{test1:{name:\"test1\"},test2:{name:\"test2\"}}}";     Map classMap = new HashMap();     classMap.put("list", Person.class);     classMap.put("map", Map.class);     // 使用暗示,直接将json解析为指定自定义对象,其中List完全解析,Map没有完全解析     MyBeanWithPerson diyBean =(MyBeanWithPerson)JSONObject.toBean(JSONObject.fromObject(json), MyBeanWithPerson.class, classMap); ? ? System.out.println(diyBean);  ? ? System.out.println("do the list release");     List<Person> list = diyBean.getList();     for (Person o : list) {         Person p = (Person) o; ? ? ? ? System.out.println(p.getName());     }  ? ? System.out.println("do the map release");     // 先往注册器中注册变换器,需要用到ezmorph包中的类     MorpherRegistry morpherRegistry = JSONUtils.getMorpherRegistry(); ? ? Morpher dynaMorpher = new BeanMorpher(Person.class, morpherRegistry);     morpherRegistry.registerMorpher(dynaMorpher);  ? ? Map map = diyBean.getMap();     //这里的map没进行类型暗示,故按默认的,里面存的为net.sf.ezmorph.bean.MorphDynaBean类型的对象 ? ? System.out.println(map); ? ? ?List<Person> output = new ArrayList(); ? ? for (Iterator i = map.values().iterator(); i.hasNext();) {         // 使用注册器对指定DynaBean进行对象变换         output.add((Person) morpherRegistry.morph(Person.class, i.next()));     }      for (Person p : output) { ? ? ? ? System.out.println(p.getName());     } } 


热点排行