`
Caoyu_google
  • 浏览: 23065 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JSON解析工具-json-lib

    博客分类:
  • java
阅读更多
一、简介
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项目当中,即可调用。
三、讲解
在进行下面的代码演示之前,我们先将几个基本的类介绍一下:
MyBean类:
[java] view plaincopy
public class MyBean {  
    private String id = null;  
    private String name = null;  
ᅠ  private Date date = null;  
ᅠ  private List cardNum = null;  
    private String[] cardType = {"身份证", "银行卡" , "公车卡"};  
  
ᅠ ᅠ public String getId() {  
        return id;  
    }  
ᅠ ᅠ public void setId(String id) {  
        this.id = id;  
    }  
    public String getName() {  
        return name;  [color=blue][/color]
    }  
ᅠ ᅠ public void setName(String name) {  
        this.name = name;  
    }  
ᅠ ᅠ public Date getDate() {  
        return date;  
    }  
ᅠ ᅠ public void setDate(Date date) {  
        this.date = date;  
    }  
ᅠ ᅠ public List getCardNum() {  
ᅠ ᅠ ᅠ ᅠ return cardNum;  
    }  
ᅠ ᅠ public void setCardNum(List cardNum) {  
ᅠ ᅠ ᅠ ᅠ this.cardNum = cardNum;  
    }  
ᅠ ᅠ public String[] getCardType() {  
ᅠ ᅠ ᅠ ᅠ return cardType;  
    }  
ᅠ ᅠ public void setCardType(String[] cardType) {  
         this.cardType = cardType;  
    }  
}  
Person类:
[java] view plaincopy
public class Person {  
    private String name = null;  
    public Person(){  
    }  
    public Person(String name){  
        this.name = name;  
    }  
ᅠ ᅠ public String getName() {  
        return name;  
    }  
ᅠ ᅠ public void setName(String name) {  
        this.name = name;  
    }  
}  
  
MyBeanWithPerson类:  
public class MyBeanWithPerson {  
    private List<Person> list = null;  
ᅠ ᅠ private Map<String,Person> map = null;  
ᅠ ᅠ public List getList() {  
        return list;  
    }  
ᅠ ᅠ public void setList(List list) {  
        this.list = list;  
    }  
ᅠ ᅠ public Map getMap() {  
        return map;  
    }  
ᅠ ᅠ public void setMap(Map map) {  
        this.map = map;  
    }  
}  
1.将json字符串转换成JSON,根据情况用JSONArray或JSONObject
[java] view plaincopy
public static void testJsonStrToJSON() {  
    JSONArray jsonArray = JSONArray.fromObject("[\"json\",\"is\",\"easy\"]");  
ᅠ ᅠ System.out.println(jsonArray);  
}  
2.将Java Bean转换成JSON对象
[java] view plaincopy
public static void testBeadToJSON() {  
    MyBean bean = new MyBean();  
    bean.setId("001");  
    bean.setName("银行卡");  
    bean.setDate(new Date());  
  
ᅠ ᅠ List cardNum = new ArrayList();  
    cardNum.add("农行");  
    cardNum.add("工行");  
    cardNum.add("建行");  
    cardNum.add(new Person("test"));  
  
ᅠ ᅠ bean.setCardNum(cardNum);  
  
ᅠ ᅠ JSONObject jsonObject = JSONObject.fromObject(bean);  
ᅠ ᅠ System.out.println(jsonObject);  
}  
3.将一般的数组转换成JSON
[java] view plaincopy
public static void testArrayToJSON() {  
    boolean[] boolArray = new boolean[] { true, false, true };  
    JSONArray jsonArray = JSONArray.fromObject(boolArray);  
    System.out.println(jsonArray);  
}  
4.将Collection对象转换成JSON
[java] view plaincopy
public static void testListToJSON() {  
    List list = new ArrayList();  
    list.add("first");  
    list.add("second");  
ᅠ ᅠ JSONArray jsonArray = JSONArray.fromObject(list);  
ᅠ ᅠ System.out.println(jsonArray);  
} <span style="font-family: Simsun; font-size: 15.555556297302246px;"> </span> 
5.将Map转换成JSON
[java] view plaincopy
public static void testMapToJSON() {  
    Map map = new HashMap();  
    map.put("name", "json");  
    map.put("bool", Boolean.TRUE);  
    map.put("int", new Integer(1));  
    map.put("arr", new String[] { "a", "b" });  
    map.put("func", "function(i){ return this.arr[i]; }");  
  
ᅠ ᅠ JSONObject jsonObject = JSONObject.fromObject(map);  
ᅠ ᅠ System.out.println(jsonObject);  
}  
6.将普通类型的JSON字符串转换成JSON
[java] view plaincopy
public static void testJSONToObject() throws Exception {  
    // 将JSon字符串转换成JsonObject对象  
    String json = "{name=\"json\",bool:true,int:1,double:2.2,func:\"function(a){ return a; }\",array:[1,2]}";  
    JSONObject jsonObject = JSONObject.fromObject(json);  
    System.out.println(jsonObject);  
  
     // 将JsonObject对象转换成JavaBean对象  
    Object bean = JSONObject.toBean(jsonObject);  
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "name"));  
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "bool"));  
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "int"));  
    System.out.println(PropertyUtils.getProperty(bean, "double"));  
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "func"));  
ᅠ ᅠ System.out.println(PropertyUtils.getProperty(bean, "array"));  
ᅠ ᅠ List arrayList = (List) JSONArray.toCollection(jsonObject.getJSONArray("array"));  
ᅠ ᅠ for (Object object : arrayList) {  
        System.out.println(object);  
    }  
} <span style="font-family: Simsun; font-size: 15.555556297302246px;"> </span> 
7.将复合类型的JSON字符串转换成复合对象,包含List
[java] view plaincopy
public static void testJSONToBeanHavaList() {  
    String json = "{list:[{name:\"test1\"},{name:\"test2\"}]}";  
    Map classMap = new HashMap();  
    classMap.put("list", Person.class);  
ᅠ ᅠ MyBeanWithPerson diyBean = (MyBeanWithPerson) JSONObject.toBean(  
ᅠ ᅠ JSONObject.fromObject(json), MyBeanWithPerson.class, classMap);  
ᅠ ᅠ System.out.println(diyBean);  
  
ᅠ ᅠ List list = diyBean.getList();  
    for (Object o : list) {  
        if (o instanceof Person) {  
            Person p = (Person) o;  
ᅠ ᅠ ᅠ ᅠ ᅠ ᅠ System.out.println(p.getName());  
        }  
    }  
}  
8.将复合类型的JSON字符串转换成复合对象,包含Map
[java] view plaincopy
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());  
    }  
}  
分享到:
评论

相关推荐

    json-lib-2.3-jdk15基础jar包合辑

    总的来说,`json-lib-2.3-jdk15`是一个强大的工具,为Java开发者提供了处理JSON数据的强大支持,尤其对于那些使用JDK 1.5环境的项目。通过其丰富的API和高效的性能,开发者可以方便地进行JSON操作,提升项目的开发...

    json-lib-2.2.3-jdk15.jar

    总的来说,`json-lib-2.2.3-jdk15.jar`是一个适用于Java 1.5环境的JSON处理库,它提供了一整套工具,帮助开发者在Java应用程序中方便地处理JSON数据。尽管现在有更现代的替代品如Gson、Jackson等,但在某些场景下,...

    json-lib-2.4-jdk15和全部依赖jar包

    `json-lib-2.4-jdk15`是JSON库的一个特定版本,专为JDK 1.5设计,确保在该环境下能够正常运行。 `json-lib`库主要包含以下组件和功能: 1. **JSON转换**:`json-lib`提供了将Java对象如Map、List、自定义类等转换...

    json-lib-2.4和相应的依赖包

    JSON库如json-lib-2.4是Java开发者在处理JSON数据时的重要工具,它提供了一系列API,使得JSON与Java对象之间的转换变得更加简单。本文将深入探讨json-lib-2.4及其在Java开发中的应用。 首先,json-lib-2.4是一个...

    json-lib-2.3-jdk15开发包和所有依赖包

    在使用`json-lib-2.3-jdk15`时,你需要确保正确地将其加入到项目的类路径中,通常是通过Maven或Gradle等构建工具来管理依赖。对于压缩包中的`json-lib.jar`,可以直接将它放入项目的`lib`目录,然后在运行时确保JVM...

    json-lib-2.2.2-jdk15.jar

    json-lib-2.2.2-jdk15.jar是JSON库的一个版本,特别针对Java 1.5(JDK 1.5)进行了优化。这个压缩包包含了json-lib库的二进制文件,用于在Android和Java平台上解析和生成JSON数据。尽管这个版本是针对JDK 1.5,但...

    json-lib-2.4-jdk15.jar及其相关依赖

    `json-lib-2.4-jdk15.jar`是这个库的一个特定版本,适用于JDK 1.5环境。 在Java开发中,`json-lib`库提供了多种将Java对象序列化为JSON字符串的方法,包括: 1. **Java Bean到JSON**: 只需传入一个Java Bean对象,...

    json-lib-2.4-jdk15.jar所需全部JAR包_JSON_

    3. ** Commons Lang**:Apache Commons Lang库,提供了很多Java语言功能的扩展,可能用于处理JSON解析过程中的各种任务。 4. **Commons BeanUtils**:Apache Commons BeanUtils库,简化了JavaBean属性的操作,可能在...

    json-lib-2.4-jdk13对应jar包大全

    4. **json-lib-2.4-jdk13.jar**:这是核心的json-lib库,包含了JSON解析和序列化的具体实现,针对Java 1.3版本进行了优化。它可以将Java对象如数组、列表、映射等转换成JSON格式,反之也可以将JSON文本解码为相应的...

    json-lib-2.4-jdk15-sources.jar

    总的来说,`json-lib-2.4-jdk15-sources.jar`为开发者提供了一个强大的工具,不仅能够方便地处理JSON数据,还通过源码开放了学习和定制的空间,对于提升Java Web开发技能大有裨益。通过研究这个库,我们可以更好地...

    ezmorph-1.0.6.jar和json-lib-2.2.2-jdk15.rar

    标题中的"ezmorph-1.0.6.jar"和"json-lib-2.2.2-jdk15.rar"指的是两个不同的Java库,用于处理数据转换和JSON操作。ezmorph是一个Java库,提供了对象到对象的转换功能,而json-lib是另一个库,专门用于处理JSON...

    json-lib-2.3.jar

    json-lib-2.3.jar是这个库的一个版本,用于支持将Java对象转换成JSON格式和将JSON数据反序列化为Java对象。 标题中提到的"json-lib-2.3.jar"是json-lib库的一个具体实现,主要包含了一系列处理JSON的类和方法。这个...

    json-lib-2.4-jdk15及其依赖jar包

    JSON-Lib-2.4-jdk15是JSON-Lib的一个特定版本,它针对JDK 1.5进行了优化,以适应该版本的Java环境。这个库包含了处理JSON的多种功能,包括将Java对象转换为JSON字符串,以及将JSON文本解析回相应的Java对象。这对于...

    json-lib-2.4 jar 程序文件

    总之,`json-lib-2.4 jar`为Java开发者提供了一个方便的工具,用于在Java代码和JSON数据之间进行交互。尽管存在更新的替代品,但对于某些项目,特别是那些已经使用JSON-Lib并希望保持向后兼容性的项目,它仍然是一个...

    json-lib-2.4-jdk15.jar所需全部JAR包

    `json-lib-2.4-jdk15.jar所需全部JAR包.rar`这个压缩包很可能包含了上述所有依赖,解压后需要将它们放入项目的`lib`目录,或者在构建工具(如Maven或Gradle)中配置依赖。 下面是一个简单的示例,展示了如何使用`...

    json-lib-2.4-jdk15.jar和其他关联的jar包

    5. **JSON解析和生成**:解析JSON字符串以获取数据,并生成符合JSON规范的字符串。 6. **JSON对象操作**:添加、删除、修改JSON对象的属性,以及遍历和查询JSON对象的结构。 在实际开发中,这两个库经常一起使用,...

    json-lib-2.1-jdk15.jar

    "json-lib-2.1-jdk15.jar" 是一个针对Java 1.5版本优化的JSON库实现,由json-lib项目提供。这个特定的版本(2.1)表明它是该库的一个稳定版本,适用于Java 1.5及更高版本的环境。这个JAR(Java Archive)文件包含了...

    java解析json的工具--json-lib

    json-lib是java工程中常用到的json解析工具,使用简单灵活,本压缩包中包括的文件有(使用json-lib必备的jar包): commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons-...

    json-lib-2.4-jdk15源码和jar包

    1. `json-lib-2.4-jdk15-sources.jar`:这是源代码的归档文件,开发者可以查看和研究`json-lib`库的内部实现。源代码对于学习和调试非常有用,特别是当你遇到问题或者想要扩展或定制库功能时。通过源代码,你可以...

    json-2.2.3-jdk13全部包6个

    "json-lib"核心包包含了JSON解析、序列化和反序列化的基本功能,而其他五个依赖包可能是为了提供额外的支持,例如与其他数据格式(如XML、Hibernate对象等)之间的转换,或者提供更高效的解析和生成机制。...

Global site tag (gtag.js) - Google Analytics