在Android中,解析Google会将URL放入ListView吗?

时间:2012-07-30 14:42:30

标签: android json listview

在我的Android应用中,我正在尝试将Google Places网址中的JSON数据解析为ListView。我正在尝试列出附近餐馆的名字。似乎解析工作,但我不知道如何从JSON数据中获取“名称”变量。返回的列表中包含以下内容的项目:

    {"id":
"6217c344be105e............"
{"id":
"2c66bf813799zr2844......"

对我而言,看起来它正在解析Google Place网址的“结果”数组中的“id”变量。我希望它在“results”数组中获取“name”变量。有人能告诉我正确的代码吗?这是我正在使用的JSON解析方法:

    public void parseJSON() throws ClientProtocolException, IOException, JSONException
{
    String bcURL="https://maps.googleapis.com/maps/api/place/search/json?"
        + "location=" + latString + "," + longiString
        + "&radius=15000&"
        + "types=restaurant&sensor=false&key="
        + myPlaceKey;

    //--- Get Places URL ----
    client = new DefaultHttpClient();
    HttpResponse response = client.execute(new HttpGet(bcURL));
    int statusLine = response.getStatusLine().getStatusCode();
    if(statusLine == 200){
        HttpEntity e = response.getEntity();
        String data = EntityUtils.toString(e);
        JSONObject urlData = new JSONObject(data);
        JSONArray resultsArr = urlData.getJSONArray("results");
        int length = resultsArr.length();
        List<String> listContents = new ArrayList<String>(length);
        for (int i = 0; i < length; i++)
        {
            listContents.add(resultsArr.getString(i));
        }

        ListView restListView = (ListView) findViewById(R.id.jsonList);
        restListView.setAdapter(new ArrayAdapter<String>(this,                      android.R.layout.simple_list_item_1, listContents));

    }
    //--- END Get Places URL ----

和代码的listview部分:

            JSONArray resultsArr = urlData.getJSONArray("results");
        int length = resultsArr.length();
        List<String> listContents = new ArrayList<String>(length);
        for (int i = 0; i < length; i++)
        {
            listContents.add(resultsArr.getString(i));
        }

        ListView restListView = (ListView) findViewById(R.id.jsonList);
        restListView.setAdapter(new ArrayAdapter<String>(this,                      android.R.layout.simple_list_item_1, listContents));

    }
    //--- END Get Places URL ----

代码的“获取名称变量”位置在哪里,代码看起来像什么?

2 个答案:

答案 0 :(得分:0)

看看here,它应该描述你需要的一切。

长话短说:您需要使用JSONObject.getString("attributeName")

从jsonObject中检索所需的值

答案 1 :(得分:0)

如果你想抓住JSON文件的第一个对象,你需要做这样的事情:

        JSONArray samplearr = null;
        samplearr = new JSONArray(String);
       for(int index=0;index<samplearr.length();index++)
      {
        try
        {   
          JSONObject obj = samplearr.getJSONObject(index);

          JSONObject userobj = samplearr.getJSONObject(index).getJSONObject("user");

          Log.d("object","sample array created");
           userobj.getString("screen_name"),
          obj.get("text").toString(),
          userobj.getString("profile_image_url")

      }catch(Exception er)
      {
          Log.d("exceptiom","exception found at : "+er.getMessage());
      }

      }

Ballyically如果你想抓住一个对象内的对象,那么你就是这样做的。根据你的问题,你想要的字段似乎在“id”字段内,所以你必须通过它解析两次