0

在我的 Android 应用程序中,我试图将来自 Google Places URL 的 JSON 数据解析为 ListView。我正在尝试列出附近餐馆的名称。解析似乎有效,但我不知道如何从 JSON 数据中获取“名称”变量。返回的列表中包含如下项目:

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

对我来说,它看起来像是在解析 Google Place URL 的“results”数组中的“id”变量。我希望它在“结果”数组中获取“名称”变量。有人可以告诉我正确的代码吗?这是我正在使用的 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 ----

和代码的列表视图部分:

            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 ----

“获取名称变量”的代码在哪里,该代码会是什么样子?

4

2 回答 2

0

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

长话短说:您需要从 jsonObject 检索您需要使用的值JSONObject.getString("attributeName")

于 2012-07-30T15:44:09.123 回答
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());
      }

      }

基本上,如果你想在一个对象中抓取一个对象,那么你就这样做。根据您的问题,您想要的字段似乎在“id”字段内,因此您必须通过它解析两次

于 2012-07-30T16:05:24.683 回答