Android从服务端获取json解析显示在客户端上面.doc
文本预览下载声明
Android从服务端获取json解析显示在客户端上面
百度经验:
首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Json数据的体积更加小,传输效率高,易解析,不过可读性不高;
因为这次要从服务器端得到Json数据,并且通过解析之后把解析后的数据显示在Android客户端中,首先部署服务器端代码(直接使用Jsp/Servlet):
构造的Json数据如下:
[{name:张三,address:北京,age:20},{name:李四,address:上海,age:30},{name:王五,address:深圳,age:35}]
[一]服务器端(Person.java省略):
①:数据构造JsonService.java
public class JsonService {
public static ListPerson getListPerson() {
ListPerson mLists = new ArrayListPerson();
mLists.add(new Person(张三, 北京, 20));
mLists.add(new Person(李四, 上海, 30));
mLists.add(new Person(王五, 深圳, 35));
return mLists;
}
②:Servlet的代码(包括构造Json数据,没有使用Json数据转换方法)JsonServlet.java
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(text/html);
response.setCharacterEncoding(UTF-8);
PrintWriter out = response.getWriter();
ListPerson persons = JsonService.getListPerson();
StringBuffer sb = new StringBuffer();
sb.append([);
for (Person person : persons) {
sb.append({).append(\name\:).append(\+person.getName()+\).append(,);????????????????????????sb.append(\address\:).append(\+person.getAddress()+\).append(,);
sb.append(\age\:).append(person.getAge());
sb.append(}).append(,);
}
sb.deleteCharAt(sb.length() - 1);
sb.append(]);
out.write(new String(sb));
out.flush();
out.close();
}
③:部署到Tomact 浏览器输入http://localhost/JsonWeb/JsonServlet直接访问结果如下:
[{name:张三,address:北京,age:20},{name:李四,address:上海,age:30},{name:王五,address:深圳,age:35}]
至此服务器端代码编码完成,下面进行客户端代码编写;? ? (二)客户端(Person类,和展示数据的布局文件因为简单省去)? ?? ?①:获取服务器端的Json数据并且解析的工具类JsonParse.java??必要的需要导入的包省去
public class JsonParse {
/**
* 解析Json数据
*
* @param urlPath
* @return mlists
* @throws Exception
*/
public static ListPerson getListPerson(String urlPath) throws Exception {
ListPerson mlists = new ArrayListPerson();
byte[] data = readParse(urlPath);
JSONArray array = new JSONArray(new String(data));
for (int i = 0; i array.length(); i++) {
JSONObject item = array.getJSONObject(i);
String name = item.getS
显示全部