Android中数据解析的实现

1、Android 中如何访问网络
Android 提供了 org.apache.http.HttpClientConnection 和 java.net.HttpURLConnection 两个连接网络对象。
使用哪个都行,具体要看企业领导的要求了。
除 此 之 外 一 般 我 比 较 喜 欢 使 用 xUtils 中 的 HttpUtils 功 能 , 该 模 块 底 层 使 用 的 就 是
org.apache.http.client.HttpClient,使用起来非常方便。

2、如何解析服务器传来的 JSON 文件
在 Android 中内置了 JSON 的解析 API,在 org.json 包中包含了如下几个类:JSONArray、JSONObject、
JSONStringer、JSONTokener 和一个异常类 JSONException。
1、JSON 解析步骤
1)、读取网络文件数据并转为一个 json 字符串
InputStream in = conn.getInputStream();
String jsonStr = DataUtil.Stream2String(in);//将流转换成字符串的工具类
2)、将字符串传入相应的 JSON 构造函数中
①、通过构造函数将 json 字符串转换成 json 对象
JSONObject jsonObject = new JSONObject(jsonStr);
②、通过构造函数将 json 字符串转换成 json 数组:
JSONArray array = new JSONArray(jsonStr);
3)、解析出 JSON 中的数据信息:
①、从 json 对象中获取你所需要的键所对应的值
JSONObject json=jsonObject.getJSONObject("weatherinfo");
String city = json.getString("city");
String temp = json.getString("temp")
②、遍历 JSON 数组,获取数组中每一个 json 对象,同时可以获取 json 对象中键对应的值
for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
String title=obj.getString("title");

String description=obj.getString("description");
}
2、生成 JSON 对象和数组
1)生成 JSON:
方法 1、创建一个 map,通过构造方法将 map 转换成 json 对象
Map map = new HashMap();
map.put("name", "zhangsan");
map.put("age", 24);
JSONObject json = new JSONObject(map);
方法 2、创建一个 json 对象,通过 put 方法添加数据
JSONObject json=new JSONObject();
json.put("name", "zhangsan");
json.put("age", 24);
2)生成 JSON 数组:
创建一个 list,通过构造方法将 list 转换成 json 对象
Map map1 = new HashMap();
map1.put("name", "zhangsan");
map1.put("age", 24);
Map map2 = new HashMap();
map2.put("name", "lisi");
map2.put("age", 25);
List> list=new ArrayList>();
list.add(map1);
list.add(map2);
JSONArray array=new JSONArray(list);

System.out.println(array.toString());


3、如何解析服务器传来的 XML 格式数据
Android 为我们提供了原生的 XML 解析和生成支持。
1、XML 解析
获取解析器: Xml.newPullParser()
设置输入流: setInput()
获取当前事件类型: getEventType()
解析下一个事件, 获取类型: next()
获取标签名: getName()
获取属性值: getAttributeValue()
获取下一个文本: nextText()
获取当前文本: getText()
五种事件类型: START_DOCUMENT, END_DOCUMENT, START_TAG, END_TAG, TEXT
示例代码:
public List getPersons(InuptStream in){
XmlPullParser parser=Xml.newPullParser();//获取解析器
parser.setInput(in,"utf-8");
for(int type=){ //循环解析

}

2、XML 生成

获取生成工具: Xml.newSerializer()
设置输出流: setOutput()
开始文档: startDocument()
结束文档: endDocument()
开始标签: startTag()
结束标签: endTag()
属性: attribute()
文本: text()
示例代码:
XmlSerializer serial=Xml.newSerializer();//获取 xml 序列化工具
serial.setOuput(put,"utf-8");
serial.startDocument("utf-8",true);
serial.startTag(null,"persons");
for(Person p:persons){
serial.startTag(null,"persons");
serial.attribute(null,"id",p.getId().toString());
serial.startTag(null,"name");
serial.attribute(null,"name",p.getName().toString());
serial.endTag(null,"name");
serial.startTag(null,"age");
serial.attribute(null,"age",p.getAge().toString());
serial.endTag(null,"age");
serial.endTag(null,"persons");

}


4、如何从网络上加载一个图片显示到界面
可以通过 BitmapFactory.decodeStream(inputStream);方法将图片转换为 bitmap,然后通过
imageView.setImageBitmap(bitmap);将该图片设置到 ImageView 中。这是原生的方法,还可以使用第三方开
源的工具来实现,比如使用 SmartImageView 作为 ImageView 控件,然后直接设置一个 url 地址即可。也可以使用

xUtils 中的 BitmapUtils 工具。


5、如何播放网络视频
除了使用 Android 提供的 MediaPlayerVideoView外通常还可以使用第三方开源万能播放器,

VitamioPlayer。该播放器兼容性好,支持几乎所有主流视频格式。


6、常见的访问网络 API 都有哪些?
Android 系统自带的 HttpUrlConnection/HttpClient。
java.net.HttpURLConnection;
org.apache.http.client.HttpClient;
OKhttp:
http://blog.csdn.net/lmj623565791/article/details/47911083
xUtils:

https://github.com/wyouflf/xUtils

Volley框架



你可能感兴趣的:(Android进阶)