1、后台返回的数据无非就是两种格式,xml和json格式。所以掌握这两种解析即可。
2、xml格式解析:
①到官网下载jar。http://simple.sourceforge.net/ 这个jar包的大小417kb.
package com.james.dataparse;
import org.junit.Test;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.ElementUnion;
import org.simpleframework.xml.Root;
import org.simpleframework.xml.core.Persister;
import java.io.File;
import java.util.Date;
import static org.junit.Assert.assertEquals;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
//调用接口解析
parseXml();
}
private void parseXml() {
//
try {
Persister persister = new Persister();
File file = new File("./example11.xml");
Example example = persister.read(Example.class, file);//把xml中的内容封装成Example
System.out.println("------"+example.value);
} catch (Exception e) {
e.printStackTrace();
}
}
/* snippet */
@Root
public static class Example {
@ElementUnion({
@Element(name="int", type=Integer.class),
@Element(name="date", type=Date.class),
@Element(name="text", type=String.class)
})
private Object value;
public Example(@Element(name="int") int value) {
this.value = value;
}
public Example(@Element(name="date") Date value) {
this.value = value;
}
public Example(@Element(name="text") String value) {
this.value = value;
}
}
}
example11.xml:
<example>
<text>ssss</text>
</example>
②dom4j解析xml
首先导入dom4j-1.6.1.jar。下载地址:https://sourceforge.net/projects/dom4j/files/latest/download?source=files
然后写example11.xml文件中的内容,并把它放到工程根目录下
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student1 id="001">
<微信公众号>@残缺的孤独</微信公众号>
<学号>20140101</学号>
<地址>北京海淀区</地址>
<座右铭>要么强大,要么听话</座右铭>
</student1>
<student2 id="002">
<新浪微博>@残缺的孤独</新浪微博>
<学号>20140102</学号>
<地址>北京朝阳区</地址>
<座右铭>在哭泣中学会坚强</座右铭>
</student2>
</students>
最后调用:
package com.james.dataparse;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
//调用接口解析
// parseXml();
Dom4jParseXml();
}
private void Dom4jParseXml() {
try {
//创建SAXReader对象
SAXReader reader = new SAXReader();
//读取文件 转换成Document
Document document = reader.read(new File("./example11.xml"));
//获取根节点元素对象
Element root = document.getRootElement();
//遍历
listNodes(root);
} catch (Exception e) {
e.printStackTrace();
}
}
//遍历当前节点下的所有节点
public void listNodes(Element node){
System.out.println("当前节点的名称:" + node.getName());
//首先获取当前节点的所有属性节点
List<Attribute> list = node.attributes();
//遍历属性节点
for(Attribute attribute : list){
System.out.println("属性"+attribute.getName() +":" + attribute.getValue());
}
//如果当前节点内容不为空,则输出
if(!(node.getTextTrim().equals(""))){
System.out.println( node.getName() + ":" + node.getText());
}
//同时迭代当前节点下面的所有子节点
//使用递归
Iterator<Element> iterator = node.elementIterator();
while(iterator.hasNext()){
Element e = iterator.next();
listNodes(e);
}
}
}
这个demo来自于:http://blog.csdn.net/yyywyr/article/details/38359049
建议使用第二种解析xml。
3、json解析:①Gson解析:
把json解析成对象:
获取Gson对象
Gson gson = new Gson();
然后通过gson.fromJson方法把json转成一个对象。
比如说:
Person person = gson.fromJson(jsonData,Person.class);
具体例子:
定义Person类:
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
封装一个Gson解析工具类GsonUtil
package com.james.dataparse;
import com.google.gson.Gson;
/**
* Created by 1 on 2017/3/22.
*/
public class GsonUtil {
//将Json数据解析成相应的映射对象
public static <T> T parseJsonWithGson(String jsonData, Class<T> type) {
Gson gson = new Gson();
T result = gson.fromJson(jsonData, type);
return result;
}
}
封装的目的是,假如你不想使用Gson解析了,直接修改这个方法就可以了,不需要修改其他地方
调用:
package com.james.dataparse;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
/**
* Example local unit test, which will execute on the development machine (host).
*
* @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
*/
public class ExampleUnitTest {
@Test
public void addition_isCorrect() throws Exception {
assertEquals(4, 2 + 2);
//调用接口解析
// parseXml();
// Dom4jParseXml();
parseJson();
}
private void parseJson() {
String jsonData = "{'name':'John', 'age':20}";
Person person = GsonUtil.parseJsonWithGson(jsonData, Person.class);
System.out.println(person.getName() + "," + person.getAge());
}
}