我是JSON android java eclipse的新手。我正在使用图像和解析json数组的listview。我遵循了本教程:http://www.wingnity.com/blog/android-json-parsing-and-image-loading-tutorial/。在该教程中,他们的JSON数组包含数组名称。但是,我的不包含数组名称。所以我的问题是如何编写没有数组名称的JSON数组?
以下是我的JSON代码。
[
{ "event_id": "EV00000001",
"event_title": "Movie 1",
},
{
"event_id": "EV00000002",
"event_title": "Movie2",
}
]
下面是我用于解析JSON的JSON编码。
protected Boolean doInBackground(String... urls) {
try {
HttpGet httppost = new HttpGet(urls[0]);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
// StatusLine stat = response.getStatusLine();
int status = response.getStatusLine().getStatusCode();
if (status == 200) {
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
JSONObject jsono = new JSONObject(data);
JSONArray jarray = jsono.getJSONArray("actors");
for (int i = 0; i < jarray.length(); i++) {
JSONObject object = jarray.getJSONObject(i);
Events event = new Events();
event.setevent_title(object.getString("event_title"));
eventList.add(event);
}
return true;
}
//------------------>>
} catch (ParseException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
我想做什么?
此问题已解决。因此,我将发布正确的代码。
protected Boolean doInBackground(String... urls) {
try {
//------------------>>
HttpGet httppost = new HttpGet(urls[0]);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = httpclient.execute(httppost);
// StatusLine stat = response.getStatusLine();
int status = response.getStatusLine().getStatusCode();
if (status == 200) {
HttpEntity entity = response.getEntity();
String data = EntityUtils.toString(entity);
JSONArray array = new JSONArray(data);
for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
Events event = new Events();
event.setevent_title(obj.getString("event_title"));
eventList.add(event);
}
return true;
}
//------------------>>
} catch (ParseException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
return false;
}
答案 0 :(得分:3)
这是一个小例子:
JSONArray array = new JSONArray();
JSONObject obj1 = new JSONObject();
obj1.put("key", "value");
array.put(obj1);
JSONObject obj2 = new JSONObject();
obj2.put("key2", "value2");
array.put(obj2);
那看起来像是:
[
{
"key": "value"
},
{
"key2": "value2"
}
]
如果您想在JSONArray中获取有关JSONObjects的信息,只需迭代它们:
for (int i = 0; i < array.length(); i++) {
JSONObject object = (JSONObject) array.get(i);
object.get("event_id");
object.get("event_title");
}
答案 1 :(得分:2)
你拥有的是一组JSON对象。
本教程有一个JSON对象,它有一个属性,它有一个JSON对象数组。
当你看到这些时,这是区分两者的简单方法:
[] -> Array
{} -> Object
所以在你的代码中,而不是做
JSONObject jsono = new JSONObject(data);
JSONArray jarray = jsono.getJSONArray("actors");
您可能想要这样做:
JSONArray jarray = new JSONArray(data);
答案 2 :(得分:0)
您可以使用GSON
librery,它非常易于使用。只需创建一个类(模型)
public class Event{
private String event_id;
private String event_title;
...
}
并在您的主要活动中
Event ev = new Event ("EV00000001", "Movie 1")
Gson gson = new Gson();
gSon = gson.toJson(ev);
Log.i("gson", gSon);
你会得到JSON
[
{ "event_id": "EV00000001",
"event_title": "Movie 1",
}
]