如何编写没有数组名称的json数组?

时间:2014-06-27 19:20:36

标签: java android json eclipse arrays

我是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;
    }

3 个答案:

答案 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",   
}
]