如今json数据在网络开发中作为传输数据的使用已经超过了xml格式的应用。json数据的格式比较简单,易于解析,另外占用带宽小。

    一般解析json数据的方法有两种,一个是运用android的SDK下面自带的包进行解析,一个是运用第三方的包进行解析,比如google出的Gson,还有阿里出的FastJson,其他的不赘述。

   比如对于下面一个json数据的解析:

{"Name" : "zhangsan",
 "Course":[
{"id":"1001","courseName":"计算机图形学","GPA":"4.0"},{"id":"1002","courseName":"离散数学","GPA":"3.5"}
]}


自带SDK解析


/**
	 * str为传入的json数据
	 * @param str
	 */
	public void readJson(String str){
		try {
			JSONObject jsonObject = new JSONObject(str);
			String flag = jsonObject.getString("Name");
			//获取jsonarray数组
			JSONArray jsonArray = jsonObject.getJSONArray("Course");
			for (int i = 0; i < jsonArray.length(); i++) {
				JSONObject object = jsonArray.getJSONObject(i);
				String id = object.getString("id");
				String courseName = object.getString("courseName");
				String GPA = object.getString("GPA");
			}
		} catch (JSONException e) {
			e.printStackTrace();
		}
	}



第二种,运用gson进行解析

首先需要导入gson开发的包,然后创建一个javabean


public class Course {

	private String id;
	private String courseName;
	private String GPA;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getCourseName() {
		return courseName;
	}

	public void setCourseName(String courseName) {
		this.courseName = courseName;
	}

	public String getGPA() {
		return GPA;
	}

	public void setGPA(String gPA) {
		GPA = gPA;
	}

}
public class People {

	private String Name;
	private List<Course> course;

	public String getName() {
		return Name;
	}

	public void setName(String name) {
		Name = name;
	}

	public List<Course> getCourse() {
		return course;
	}

	public void setCourse(List<Course> course) {
		this.course = course;
	}


}



然后进行解析json


//str为获取的json数据,暂时置空
	private String str ="";
		
	public People init(String str){
		Gson gson = new Gson();
		Type type = new TypeToken<People>() {}.getType();
		People people = gson.fromJson(str, type);
		return people;
	}

	public void readJson2(){
		People people = init(str);
		String name= people.getName();
		List<Course> courses = people.getCourse();
		for (Course course : courses) {
			String id = course.getId();
			String courseName = course.getCourseName();
			String gpa = course.getGPA();
		}
	}