之前在学习”如何解析:数据”的时候,在网上查了很多资料,在这里我总结一下几个常用的框架,一个是json-lib,另外一个是Gson。为了学习的方便,我的代码在java环境下运行,不在android环境下运行
(1)json-lib框架
先到网上去下载json-lib.jar,然后导入工程即可。
生成json数据,代码如下:
public void createJSON() {
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "吴长老");
jsonObject.put("age", 21);
System.out.println(jsonObject.toString());
} catch (JSONException e) {
e.printStackTrace();
}
}
运行结果:
为了学习的方便,我们直接来解析这个生成出来的json字符串
生成json数据,代码如下:
public void parseJSON() {
try {
JSONObject jsonObject = new JSONObject("{\"age\":21,\"name\":\"吴长老\"}");
String name = jsonObject.optString("name", "");
String age = jsonObject.optString("age", "");
String sex = jsonObject.optString("sex", "未知");
System.out.println("name:" + name);
System.out.println("age:" + age);
System.out.println("sex:" + sex);
} catch (JSONException e) {
e.printStackTrace();
}
}
运行结果:
很显然,我们解析的是对的。
值得注意的是,上面用到了optString(),为什么不用getString()?因为如果我们要获取的属性值不存在(比如sex属性),如果用getString就会抛异常,用optString则不会抛异常,因为我们已经指定了一个默认值。
(1)Gson框架
Gson是google推出的一款解析json数据的框架,它的特点是,可以直接将一个json字符串解析成java bean对象。什么叫java bean对象?就是我们定义的一个对象,里面只有属性和get、set方法,如果还不懂,就看代码演示吧。使用json框架之前需要下载gson.jar
首先,我们要定义个java bean对象,这里我们定义为Person.java,代码如下:
public class Person {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "name:" + name + "\nage:" + age;
}
}
看到了吧,是不是很熟悉,这就是java bean,为了演示的方便,我还重写了它的toString方法,下面看我如何快速将一个person对象转化为json数据
生成json数据,代码如下:
public void createJSON() {
Person person = new Person();
person.setName("吴长老");
person.setAge(21);
Gson gson = new Gson();
System.out.println(gson.toJson(person));
}
运行结果:
使用Gson解析json数据,代码如下:
public void parseJSON() {
Gson gson = new Gson();
Person person = gson.fromJson("{\"age\":21,\"name\":\"吴长老\"}", Person.class);
System.out.println(person.toString());
}
运行结果:
成功解析!!!需要注意的是,将json数据转化为bean对象的时候,属性值必须要一一对应,不能多,也不能少,否则会报错的
好了,JSON数据的解析就学到这了,以后应该够用了。