第七章 数据解析及读取
- 网络传输中数据的组织方式:xml、json、http
(1)xml:可扩展标记语言
特点:保存少量数据,可跨平台
解析方式:sax、dom、pull
a. sax解析:
特点:速度快,占用内存少。事件驱动,不会一次性把所有内容加载到内存中。
startElement:元素节点开始
localName:不带前缀的标签名
qName:带前缀的标签名
attributes:节点内的属性和值
<student id ="1">
<name>小明</name>
</student>
(2)dom解析:
特点:一次性把所有内容加载到内存中
使用于服务端编程
(3)pull解析:
特点:类似于sax,不会自动读取
适用于移动设备,占用内存少
- json解析
特点:相对xml,更加节省空间
(1)json对象:{"key1":"value1","key2":"value2"}
a. 以{}开始和结束
b. key必须是字符串,value可以是基础数据类型、String、json对象、json数组
c. 每条数据以逗号分隔
例子:
{"name":"小明","age":25,"married":"true"}
(2)json的解析
//根据传入的字符串,得到JSONObject类型对象
JSONObject jsonObject = new JSONObject(str);
//根据key,获取对应的数据
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
boolean b = jsonObject.getBoolean("married")
//向jsonOnject中传入数据
jsonObject.put("name","小红");
jsonObject.put("age",20);
jsonObject.put("married","false");
(3)JSONArray json数组
a. 以[]开始和结束
b. 每一条数据都是一个jsonObject
c. 每条数据以逗号分隔
例子:
[{"name":"小明","age":25,"sex":"male"},{"name":"小红","age":23,"sex":"female"}]
解析一条JSONArray 格式的数据
//根据传入的字符串得到一个JSONArray 类型的对象
JSONArray jsonArray = new JSONArray (str);
for(int i=0; i<jsonArray.length;i++){
//根据下标得到JSONObject对象
JSONObject jsonObject = jsonArray.getJSONObject(i);
//根据key值得到对应的数据
String name = jsonObject.getString("name");
int age = jsonObject.getInt("age");
String sex = jsonObject.getString("sex");
}
//向JSONArray 中传入数据
JSONArray jsonArray = new JSONArray();
JSONObject jsonObject1 = new JSONObject();
JSONObject jsonObject2 = new JSONObject();
jsonObject1.put("name","小黑");
jsonObject2.put("name","小白");
jsonArray.put(jsonObject1);
jsonArray.put(jsonObject2);