我应该在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?