日期:2014-05-16  浏览次数:20483 次

Android解析JSON方式(二) 客户端解析SON数据

在上一篇中搭建了服务器端的程序,这篇我们来建立一个Android项目,来访问服务器取得JSON格式数据,并解析JSON数据格式,输出到日志控制台。

我们建立的项目目录结构如下:



运行的界面截图:



当我们分别点击四个按钮,可以看到控制台的输出日志:



以下是源代码:

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
	<Button 
	    android:id="@+id/person"
	    android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="解析person数据" 
        android:onClick="click"/>
	<Button 
	    android:id="@+id/persons"
	    android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="解析persons数据" 
        android:onClick="click"/>
	<Button 
	    android:id="@+id/listString"
	    android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="解析listString数据" 
        android:onClick="click"/>
	<Button 
	    android:id="@+id/listMap"
	    android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="解析listMap数据" 
        android:onClick="click"/>
</LinearLayout>

MainActivity.java

package com.json.activity;

import java.util.List;
import java.util.Map;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.json.bean.Person;
import com.json.util.HttpUtils;
import com.json.util.JsonTools;

public class MainActivity extends Activity {
	private static String PATH = "http://192.168.56.1:8080/JsonProject/servlet/JsonServlet";
    private static final String TAG = "MainActivity";
	@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
    public void click(View v){
    	switch (v.getId()) {
		case R.id.person:
			String path1=PATH+"?action_flag=person";
			String jsonString1 = HttpUtils.getJsonContent(path1);
			Person person = JsonTools.getPerson("person", jsonString1);
			Log.i(TAG, person.toString());
			break;
		case R.id.persons:
			String path2=PATH+"?action_flag=persons";
			String jsonString2 = HttpUtils.getJsonContent(path2);
			List<Person> list2 = JsonTools.getPersons("persons", jsonString2);
			Log.i(TAG, list2.toString());	
			break;
		case R.id.listString:
			String path3=PATH+"?action_flag=listString";
			String jsonString3 = HttpUtils.getJsonContent(path3);
			List<String> list3 = JsonTools.getList("listString", jsonString3);
			Log.i(TAG, list3.toString());
			
			break;
		case R.id.listMap:
			String path4=PATH+"?action_flag=listMap";
			String jsonString4 = HttpUtils.getJsonContent(path4);
			List<Map<String,Object>> list4 = JsonTools.getListMap("listMap", jsonString4);
			Log.i(TAG, list4.toString());
			break;
		}
    }
}

Person.java

package com.json.bean;

public class Person {
	private int id;
	private String name;
	private String address;
	
	public Person() {
		super();
	}
	public Person(int id, String name, String addrss) {
		su