我们以这样的一个例子来解析他的数据
代码为:
先新创建一个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解析数据的过程。