組み込みのJSONクラスを使用する場合は、次のようにすることができます。
DefaultHttpClient defaultClient = new DefaultHttpClient();
HttpGet httpGetRequest = new HttpGet(s);
HttpResponse httpResponse = defaultClient.execute(httpGetRequest);
BufferedReader reader = new BufferedReader(new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8"));
String json = reader.readLine();
JSONObject jsonObject = new JSONObject(json);
if (jsonObject.has("lessons")) {
JSONArray jsonLessons = jsonObject.getJSONArray("lessons");
List<Lesson> lessons = new ArrayList<Lesson>();
for(int i = 0; i < jsonLessons.length(); i++) {
JSONObject jsonLesson = jsonLessons.get(i);
// Use optString instead of get on the next lines if you're not sure
// the fields are always there
String name = jsonLesson.getString("name");
String teacher = jsonLesson.getString("prof");
lessons.add(new Lesson(name, teacher));
}
}
Jsonが常に1行で到着することを確認してください。行を壊すと、その行を読むだけなので、このコードは壊れます。
私の選択はGsonです。この場合、LessonクラスとScheduleクラスを作成します。
public class Lesson {
String name;
String prof;
}
public class Schedule {
List<Lesson> lessons;
}
フィールド名はjsonフィールドに対応していることに注意してください。フィールドをプライベートにして、気分が良くなった場合はsomgetterメソッドを追加してください。:-)
これで、レッスンリストを含むScheduleオブジェクトを次のように解析できます。
DefaultHttpClient defaultClient = new DefaultHttpClient();
HttpGet httpGetRequest = new HttpGet(s);
HttpResponse httpResponse = defaultClient.execute(httpGetRequest);
Reader in = new InputStreamReader(httpResponse.getEntity().getContent(), "UTF-8");
Gson gson = new Gson();
Schedule schedule = gson.fromJson(in, Schedule.class);
List<Lesson> lessons = schedule.lessons;
お役に立てれば!