一、    所使用的包

    JSONObject和JSONAarry是json-lib包下的类,要是用它们首先应该引入JSON-lib包以及相关依赖包commons-lang.jar、commons-beanutils.jar、commons-collections.jar、commons-logging.jar ezmorph.jarjson-lib-2.2.2-jdk15.jar

二、JSONArray和JSONObject的使用

    

    JSONObject j1 = new JSONObject();
    j1.put("小明","男");
    j1.put("小红","女");                   //put方法里放的key和value都是object
    System.out.println(j1);
    JSONObject j2 = new JSONObject();
    j2.element("小明","男");
    System.out.println(j2);
    j2.accumulate("小明","女");
    System.out.println(j2);
    j2.accumulate("小红","女");
    System.out.println(j2);               //{"小明":["男","女"],"小红":"女"}
    JSONArray array = j2.getJSONArray("小明");
    System.out.println(array);            //["男","女"]
    Object o = array.get(0);
    System.out.println(o);                // 男

这里要注意put、element、accumulate的使用区别。它们分别都是添加键值对,put方法的key和value都可以是object,另外两个方法的key必须是 string。当遇到key相同时,put方法会把value值替换掉,而accumulate会在当前key下生成一个JSONArray。element方法遇到key相同时,如果value不是空则执行accumulate方法,否则会移除这个key.

此外JSONObject.fromObject()方法可以将一个Object对象转化为JsonObject对象,打印出来的是Json格式。j1.getJSONObject()方法可以讲一个String字符串转化为JSONObject对象。JSONObject对象还有很多别的方法,可以参看API。 在JSONObject的方法里put作为前缀的如果转化失败会出现异常,所以要try catch或者throw出去,而opt前缀的方法不会抛出异常。

JSONArray可以看成一个数组的形式。它使用add方法来添加元素,支持按索引添加,也可以之间添加一个Collection。取值时使用get方法,参数是index(第一个是0)索引。