Android JSON解析器数组

时间:2013-03-01 04:46:37

标签: java android json

班级:

 public class MainActivity extends Activity {


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        new Read().execute("masjids");

    }

    public JSONObject retrieveInfo(String radius) throws ClientProtocolException,
            IOException, JSONException {
        StringBuilder url = new StringBuilder(
                "http://iqamah.org/api/index.php?lat=43&long=-79&radius=");
        url.append(radius);

        HttpClient httpclient = new DefaultHttpClient();
        HttpGet get = new HttpGet(url.toString());
        HttpResponse r = httpclient.execute(get);
        HttpEntity e = r.getEntity();
        String data = EntityUtils.toString(e);
        JSONObject timeline = new JSONObject(data);
        return timeline.getJSONObject("1");
    }

    private class Read extends AsyncTask<String, Integer, String> {

        ProgressDialog pd = null;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pd = new ProgressDialog(MainActivity.this);
            pd.setTitle("Loading...");
            pd.setMessage("Please wait...");
            pd.setCancelable(false);
            pd.show();

        }

        protected String doInBackground(String... arg0) {
            // TODO Auto-generated method stub
            try {
                JSONObject json = retrieveInfo("200");
                return json.getString(arg0[0]);
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String status) {
            super.onPostExecute(status);
            pd.dismiss();

            TextView day = (TextView) findViewById(R.id.displayDay);
            day.setText("Masjid: " + status);

        }

    }

}

JSON:

{
    "status": "ok",
    "masjids": [
        {
            "id": "44|Madina Masjid|1200 Danforth Ave, Toronto|49.99"
        },
        {
            "id": "39|Darul Taqwa|1 Thorncliffe Park Drive, Toronto|51.59"
        },
        {
            "id": "43|Darul Khair|25 St Dennis, Toronto|52.12"
        }
    ]
}

我正在尝试访问masjids->id[0]数组,如何使用上面的代码执行此操作?

3 个答案:

答案 0 :(得分:0)

String data = "{ "status": "ok", "masjids": [ { "id": "44|Madina Masjid|1200 Danforth Ave, Toronto|49.99" }, { "id": "39|Darul Taqwa|1 Thorncliffe Park Drive, Toronto|51.59" }, { "id": "43|Darul Khair|25 St Dennis, Toronto|52.12" } ] }";

JSONObject jObj = new JSONObject(data);
JSONArray jArray_masjids = jObj.getJSONArray("masjids");
String address = jArray_masjids.getJSONObject(0).getString("id");

答案 1 :(得分:0)

 JSONObject timeline = new JSONObject(data);
JasonArry jarry=timeline.getJsonArray("masjids");
for (int i = 0; i < jarry.length(); i++) {
JSONObject explrObject = jsonArray.getJSONObject(i);
String newStr = explrObject.getString("id");
}

答案 2 :(得分:0)

试试这个,

String data = "{ "status": "ok", "masjids": [ { "id": "44|Madina Masjid|1200 Danforth Ave,     Toronto|49.99" }, { "id": "39|Darul Taqwa|1 Thorncliffe Park Drive, Toronto|51.59" }, { "id":    "43|Darul Khair|25 St Dennis, Toronto|52.12" } ] }";

 JSONObject jObj = new JSONObject(data);
 JSONArray jArray_masjids = jObj.getJSONArray("masjids");
 for(int i = 0 ;i<jArray_masjids;i++){
 String address = jsonArray.getJSONObject(i).getString("id");

 }