你必须掌握的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();) { // 使用注册器对指—ynaBean进行对象变换 output.add((Person) morpherRegistry.morph(Person.class, i.next())); } for (Person p : output) { ? ? ? ? System.out.println(p.getName()); } }