json数据格式解析3–利用第三方json-lib进行解析json
本文转自:http://www.happyalaric.com/archives/396
前两节讲过了json数据格式和json解析原理,为了不重复发明轮子,我们这节来介绍利用第三方jar工具来解析数据。
首先我们还是到json.org,来下载jar帮助我们解析json数据。
我们在官方选择java下面的
json-lib
一、介绍
json-lib是一个java类库,提供将Java对象,包括beans,maps,collections,javaarraysandXML等转换成JSON,或者反向转换的功能。
二、下载
进入http://json-lib.sourceforge.net/点击左边download
选择home下面的json-lib到下载页面点击json-lib-2.4-jdk15-sources.jar,json-lib-2.4-jdk15-javadoc.jar直接下载,这个是源码利于我们学习。再下一份编译好的jarjson-lib-2.4-jdk15.jar。
下载地址:http://sourceforge.net/projects/json-lib/files/json-lib/json-lib-2.4/json-lib-2.4-jdk15-javadoc.jar
三、演练
将我们下载的json-lib-2.4-jdk15-sources.jar导入到我们的eclipse工程里面。
然后写个简单例子
packagejson;
importnet.sf.json.JSONArray;
importnet.sf.json.JSONObject;
/**
*
*【描述】:
*【作者】:alaric
*【时间】:Jun1,2012
*【文件】:jsonTest.java
*
*/
publicclassTest{
publicstaticvoidmain(String[]args){
JSONArrayjaArray=newJSONArray();
jaArray.add(“苹果”);
jaArray.add(1,“梨子”);
System.out.println(jaArray.toString());
StringjsonString=“{‘zhangsan’:'ddd’,'lisi’:'ddddd’}”;
JSONObjectjsonObject=JSONObject.fromObject(jsonString);
System.out.println(jsonObject.get(“zhangsan”));
System.out.println(jsonObject.get(“lisi”));
}
}
结果报
Exceptioninthread“main”java.lang.NoClassDefFoundError:org/apache/commons/lang/exception/NestableRuntimeException
这样一来就知道是依赖别的包了
再回到http://json-lib.sourceforge.net/一看发现有这么一段
Json-libcomesintwoflavors,dependingonthejdkcompatibility.json-lib-x.x-jdk13iscompatiblewithJDK1.3.1andupwards.json-lib-x.x-jdk15iscompatiblewithJDK1.5,includessupportforEnumsinJSONArrayandJSONObject.Pleasereffertotheappropriatejavadoclinksavailableintheprojectmenu.
Json-librequires(atleast)thefollowingdependenciesinyourclasspath:
jakartacommons-lang2.5
jakartacommons-beanutils1.8.0
jakartacommons-collections3.2.1
jakartacommons-logging1.1.1
ezmorph1.0.6
OtherdependenciesareneededifworkingwithXMLandGroovy.PleasereviewtheDependenciesreporttoknowmoreaboutthoseextradependencies.
意思是说后缀是13的依赖于jdk1.3,15的依赖于jdk1.5在JSONArray和JSONObject中也支持枚举
json-lib至少需要依赖你的classpath上面那些包。
点击下面的连接下载这些依赖
查看依赖树
[img][/img]下载后倒入工程:
运行程序
输出:
["苹果","梨子"]
ddd
ddddd