安卓网络操作之Json数据解析案例

我们以这样的一个例子来解析他的数据
在这里插入图片描述
代码为:
先新创建一个LessonResult类

import java.util.ArrayList;
import java.util.List;

public class LessonResult {
private int mStatus;
private List<Lesson> mLessons = new ArrayList<>();

public int getStatus() {
    return mStatus;
}

public void setStatus(int status) {
    mStatus = status;
}

public List<Lesson> getLessons() {
    return mLessons;
}

public void setLessons(List<Lesson> lessons) {
    mLessons = lessons;
}

public static class Lesson{
    private int mID;
    private String mName;
    private String mSmallPictureUrl;
    private String mBigPictureUrl;
    private String mDescription;
    private int mLearnerNumber;

    public int getID() {
        return mID;
    }

    public void setID(int ID) {
        mID = ID;
    }

    public String getName() {
        return mName;
    }

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

    public String getSmallPictureUrl() {
        return mSmallPictureUrl;
    }

    public void setSmallPictureUrl(String smallPictureUrl) {
        mSmallPictureUrl = smallPictureUrl;
    }

    public String getBigPictureUrl() {
        return mBigPictureUrl;
    }

    public void setBigPictureUrl(String bigPictureUrl) {
        mBigPictureUrl = bigPictureUrl;
    }

    public String getDescription() {
        return mDescription;
    }

    public void setDescription(String description) {
        mDescription = description;
    }

    public int getLearnerNumber() {
        return mLearnerNumber;
    }

    public void setLearnerNumber(int learnerNumber) {
        mLearnerNumber = learnerNumber;
    }

    @Override
    public String toString() {
        return "Lesson{" +
                "mID=" + mID +
                ", mName='" + mName + '\'' +
                ", mSmallPictureUrl='" + mSmallPictureUrl + '\'' +
                ", mBigPictureUrl='" + mBigPictureUrl + '\'' +
                ", mDescription='" + mDescription + '\'' +
                ", mLearnerNumber=" + mLearnerNumber +
                '}';
    }
}

@Override
public String toString() {
    return "LessonResult{" +
            "mStatus=" + mStatus +
            ", mLessons=" + mLessons +
            '}';
}
}

我们用json来解析数据

	public void onClick(View v) {
    switch (v.getId()) {
        case R.id.getButton:
            new Thread(new Runnable() {
                @Override
                public void run() {
                    String urlString = "http://www.imooc.com/api/teacher?type=2&page=1";//这个是我们要解析的数据地址
                    mResult = requestDataByGet(urlString);//这是上篇文章中的GET方法来请求数据
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mResult = decode(mResult);
                            mTextView.setText(mResult);
                        }
                    });
                }
            }).start();
            break;
	//下面部分为重点内容
        case R.id.parseDataButton:
            if (!TextUtils.isEmpty(mResult)) {
                handleJSONData(mResult); //这一步来解析数据
            }
            break;
    }
}
	//以下为固定的步骤 ,需要牢记
private void handleJSONData(String json) {
    try {
        JSONObject jsonObject = new JSONObject(json);  //①
		//②的作用为建立来存储数据
        LessonResult lessonResult = new LessonResult();  //②
        List<LessonResult.Lesson> lessonList = new ArrayList<>(); //②
        //下面的步骤是我们得到数据
        int status = jsonObject.getInt("status");  //①
        JSONArray lessons = jsonObject.getJSONArray("data"); //①
        if (lessons != null && lessons.length() > 0) {
            for (int index = 0; index < lessons.length(); index++) {
                JSONObject item = (JSONObject) lessons.get(index);
                int id = item.getInt("id");
                String name = item.getString("name");
                String smallPic = item.getString("picSmall");
                String bigPic = item.getString("picBig");
                String description = item.getString("description");
                int learner = item.getInt("learner");
				//得到数据之后我们要将数据进行储存,要用的下面的步骤
                LessonResult.Lesson lesson = new LessonResult.Lesson();
                lesson.setID(id);
                lesson.setName(name);
                lesson.setSmallPictureUrl(smallPic);
                lesson.setBigPictureUrl(bigPic);
                lesson.setDescription(description);
                lesson.setLearnerNumber(learner);
                lessonList.add(lesson);
            }
            lessonResult.setStatus(status);
            lessonResult.setLessons(lessonList);
            mTextView.setText("data is : " + lessonResult.toString());
        }

    } catch (JSONException e) {
        e.printStackTrace();
    }
}

之后便完成了Json解析数据的过程。

猜你喜欢

转载自blog.csdn.net/Derrick_itRose/article/details/108420415
今日推荐