我应该在JSON中转换哪个集合并再次解析?

对不起,我解释一下。

我正在开发一个在Google App Engine上使用WebService的Android应用程序。 在我的WebService中,我使用JSON通过JAX-RS转换了一个ArrayList,最后的JSON类似于

{“lessons”:[{“name”:“blabla”,“prof”:“Tom”},{“name”:“blabla”,“prof”:“Tom”}]}

这是实用的还是有更好的方法?

然后,我从Android应用中获取这个JSON,并通过在线发现的snipplet将其转换为JSONObject:

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);

我怎样才能回到我的ArrayList?

我已经阅读了大量的代码并尝试使用Gson ...这应该很简单,但是我昨天已经失去了一整天。


  private class Info {
        public String name;
        public String prof;
    }

    ArrayList<Info> arrayList = new ArrayList<Info>();

    JSONArray array = jsonObject.optJSONArray("lessons");
    int len = array.length();

    for (int i = 0; i < len ; i++) {
     JSONObject tmp = array.optJSONObject(i);
     Info info = new Info();
     info.name = tmp.optString("name");
     info.prof = tmp.optString("prof");
      arrayList.add(info)
}

检查错误的错误


从这个帖子下载我的例子。 显示如何将对象转换为json对象的完整工作源代码。 希望它有帮助。 如何在我的android应用程序中保存一组简单对象?


如果你想使用内置的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总是到达一行。 打破一条线会破坏此代码,因为您只能阅读该行。

我选择的是Gson。 在这种情况下,您可以创建课程课程和计划课程:

public class Lesson {

    String name;
    String prof;

}

public class Schedule {

    List<Lesson> lessons;
}   

请注意,字段名称对应于json字段。 如果感觉更好,请随意将字段设置为私人并添加som getter方法。 :-)

现在,您可以使用以下命令解析包含课程列表的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;

希望这可以帮助!

链接地址: http://www.djcxy.com/p/29591.html

上一篇: Which Collection should I convert in JSON and parse again?

下一篇: android cannot update table in mysql database