将JSONArray解析为TextView

时间:2012-07-19 20:49:07

标签: android arrays

有人可以帮我指导如何将JSONArray解析为TextViews吗?到目前为止,每次我解析它,它只显示最后的结果,而不是一切。

到目前为止,我有:

            try {
            standby_position = json.getString("standby_position");
            zone_name = json.getString("zone_name");
            zone_no = json.getString("zone_no");
            status = json.getString("status");


            JSONArray standby_list = json.getJSONArray("standby_list");

            for (int i1 = 0; i1 < standby_list.length(); i1++) {
                JSONObject c = standby_list.getJSONObject(i1);


            DRIVER = c.getString(driver);
            SINCE = c.getString(since);
            WAITING = c.getString(waiting);
            GPS_DATA = c.getString(gps_data);



            }

        } catch (JSONException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

我试图这样做:

 TextView information = (TextView) findViewById(R.id.information);
  information.setText ( DRIVER + SINCE + WAITING ); 

以下是我要解析的内容:

 {
"driver": "819",
"gps_data": "1",
"last_geocode": "",
"lastLatitudeUpdate": "12/31/1969 5:00:00 PM",
"standby_position": "1",
"zone_name": "STK",
"zone_no": "STK",
"status": "Your are checked-in and currently #1 STK. (as of: 7/19/2012 1:50:02 PM)",
"standby_list": [
    {
        "driver": "291",
        "since": "12:33:00 PM",
        "waiting": "77",
        "gps_data": "0"
    },
    {
        "driver": "103",
        "since": "12:49:21 PM",
        "waiting": "61",
        "gps_data": "0"
    },
    {
        "driver": "287",
        "since": "12:51:00 PM",
        "waiting": "59",
        "gps_data": "0"
    },
    {
        "driver": "271",
        "since": "1:22:00 PM",
        "waiting": "28",
        "gps_data": "0"
    },
    {
        "driver": "819",
        "since": "8:58:36 AM",
        "waiting": "292",
        "gps_data": "1"
    }
]
 }

当我这样做时,Json将展示的唯一最后一个解析。有任何想法吗?

3 个答案:

答案 0 :(得分:0)

您可以在循环中获取值,但只能为一个区域添加食物。当然最后一个区域是唯一要显示的区域。 如果您只需要查看有限时间内的值,请尝试使用列表中每个元素的文本视图或“Toast.makeText(...)”。

答案 1 :(得分:0)

您始终会重写此变量。这就是为什么你总是只有最后一个json

答案 2 :(得分:0)

你最后一个JSON是什么意思?

您是指JSONArray中名为“standby_list”的最后一个对象吗?

如果是这样,那是因为你只是处理最后一个。 相反,你应该使用某种集合并在那上面调用Add。

例如

class MyObject {
    public String driver, since, waiting, gps;
}

List<MyObject> list = new ArrayList<MyObject>();

for (int i1 = 0; i1 < standby_list.length(); i1++) {
    JSONObject c = standby_list.getJSONObject(i1);
    MyObject myContainer = new MyObject();   

    myContainer.driver = c.getString(driver);
    myContainer.since = c.getString(since);
    myContainer.waiting = c.getString(waiting);
    myContainer.gps = c.getString(gps_data);
    list.add(myContainer);
}