为了解析程序中的 JSON 数据,在网上下了 json-lib-2.3-jdk15.jar。这个包里封装了解析 JSON 的方法。要使用这个包,还要有以下几个包的支持。
commons-lang.jar; 扩展了 java.lang 包
commons-logging.jar;
commons-collections.jar; 扩展了 java 的集合类
commons-beanutils.jar,ezmorph.jar;
下面列出几个常用的方法。
/* 把一个 obj 转化为一个 JSONObject,obj 必须符合格式要求 */
public static JSONObject fromObject (Object obj);
/* 从一个 JSONObject 中取出 key 为 arg 的 JSON, 作为 JSONObject 返回 */
public static JSONObject getJSONObject (String arg);
/* 从 JSONObject 中取出 key 为 arg 的 JSON, 返回一个 JSONArray,数组格式的 JSON */
public static JSONArray getJSONArray (String arg);
/* 将 obj 的数据封装进与之对应的 bean */
public static Object toBean (JSONObject obj, Class bean);
/* 将 array 中的每一个元素分别封装进 bean,返回一个 Collection */
public static Collection toCollection (JSONArray array, Class bean);
例子:
Student.java
===================================================================================
package com.test;
public class Student {
private String stuName;
private String stuNo;
public Student() {
}
public void setStuName(String stuName) {
this.stuName = stuName;
}
public String getStuName() {
return stuName;
}
public void setStuNo(String stuNo) {
this.stuNo = stuNo;
}
public String getStuNo() {
return stuNo;
}
}
===================================================================================
Test.java
===================================================================================
package com.test;
import net.sf.json.*;
public class Test {
public static void main(String[] args) {
String json = "{stu : {stuName : /"yinkaihua/", stuNo : /"0120510340202/"}}";
//System.out.println(json);
JSONObject jsObj = JSONObject.fromObject(json);
Student stu = (Student)JSONObject.toBean(jsObj.getJSONObject("stu"), Student.class);
System.out.println(stu.getStuName() + " " + stu.getStuNo());
}
}
===================================================================================
上面的例子就是将一个 JSON 格式的字符串封装进一个类,类要与 JSON 对应。