初见JSON
第一次接触JSON是因为在Android客户端开发的 时候,我需要获得来自服务器的信息,服务器给出的是json的字符串,我需要对这个字符串进行解析得到我需要的信息,但是我不知道该怎么使用JSON,因为从来没接触过。所以我查了一些资料,知道了JSON的一点最基本的用法,所以我也就写下来在自己忘记的时候可以查看一下,因为我只是会自己需要的操作,所以其他的操作我就暂时不写了,因为我也不懂,这点还是要见谅一下。
为什么要用JSON
为什么要用JSON呢?XML不好么?从服务器获得的可以是XML文件,也可以是JSON文件,我们都需要对文件进行解析,只是对XML的解析比较麻烦和繁琐,而JSON的操作就比较简单了,所以 服务器端可以返回JSON的字符串,然后我们直接生成一个JSONObject对象,就直接可以进行解析了,方便操作。
JSON的操作
<data>
<student>
<id>10001</id>
<name>Tom</name>
<sex>boy</sex>
<age>18</age>
</student>
<student>
<id>10002</id>
<name>Jack</name>
<sex>boy</sex>
<age>16</age>
</student>
</data>
比如说,从服务器可能得到上面所示的一个XML文件,我们需要对XML文件进行解析,获取每一位学生的信息,这里我就不说XML文件怎么解析了,不了解的可以去网上看看资料,总之还是比较不太方便的,所以我们不想要这样的文件,我们想要一个JSON的文件,那么JSON里的文件信息是什么样的呢?
[{id:1000,name:"Tom",sex:"boy",age:18},{id:10002,name:""Jack",sex:"boy",age:16}]
如上,转换成JSON的之后的文件内容就是这样的,当然,关于双引号的什么转义啦就见谅一下啦。
要对这个字符串进行解析,当然不需要大家自己来做,因为java给我们封装好了一个类,我们可以直接使用的。JSONObject,这个类就是java给我们提供的专门用来解析JSON文件的,下面我讲一下它的最简单的用法。
比如现在我得到了一个字符串,内容就是上面的,现在我需要生成一个对象,一个JSONArray的对象,这个对象保存的是一个数组,也就是说JSONArray里面存放的是JSONObject对象,而JSONObject对象里面存放的就是每一位学生的信息。
public String parseJSON(String json){
StringBuilder sb = new StringBuilder();
try {
JSONArray array = new JSONArray(json);
for(int i=0;i<array.length();i++){
JSONObject object = array.getJSONObject(i);
int id = object.getInt("id");
String name = object.getString("name");
String sex = object.getString("sex");
int age = object.getInt("age");
sb.append(id+"-").append(name+"-").append(sex+"-").append(age).append("\n");
}
} catch (JSONException e) {}
return sb.toString();
}
上面的方法就是对JSON的字符串进行解析,然后我们在MainActivity中调用这个方法,在TextView上来显示内容,就知道我们解析的正确性了,当然,是正确的啦。
TextView text = (TextView) findViewById(R.id.text);
String s = "[{id:1000,name:\"Tom\",sex:\"boy\",age:18},{id:10002,name:\"Jack\",sex:\"boy\",age:16}]";
text.setText(parseJSON(s));
上面是我在MainActivity中调用的方法,然后我们看一看在手机上显示的情况:
可以看到,显示是正确的,说明我们的解析是正确的!
好了,对JSON的一点使用就到这里了,如果有更深的内容,我还会继续更新的!