如何解析php json url到android列表视图这里是代码我没有显示

时间:2012-08-22 17:33:09

标签: android json parsing listview listitem

我正在从以下网址解析json

http://www.kaverisoft.com/careers/assignments/android/a1.php

使用以下代码

公共类MainActivity扩展了ListActivity {

/** Called when the activity is first created. */
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    setListAdapter(new ArrayAdapter(
            this,android.R.layout.simple_list_item_1,
            this.populate()));
}

private ArrayList<String> populate() {
    ArrayList<String> items = new ArrayList<String>();

    try {
        URL url = new URL
        ("http://www.kaverisoft.com/careers/assignments/android/a1.php");
        HttpURLConnection urlConnection =
            (HttpURLConnection) url.openConnection();
        urlConnection.setRequestMethod("GET");
        urlConnection.connect();
                    // gets the server json data
        BufferedReader bufferedReader =
            new BufferedReader(new InputStreamReader(
                    urlConnection.getInputStream()));

        String next;
        while ((next = bufferedReader.readLine()) != null){
            JSONArray ja = new JSONArray(next);

            for (int i = 0; i < ja.length(); i++) {
                JSONObject jo = (JSONObject) ja.get(i);
                items.add(jo.getString("text"));
            }
        }
    } catch (MalformedURLException 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 items;
}

}

logcat显示未找到org.json.JSONException值文本

但是我无法将任何数据填充到listview,但如果我使用直接的json格式url,我可以填充数据,请帮助。

输出如下图所示。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

据我所见,列表中有3种物体:相机,书籍和音乐。 对于他们每个人,你将不得不使用不同的解析。首先,您应该检测数组的当前元素是什么类型的对象。

例如:

if (jo.has("book")) {
  JSONObject jsonBook = jo.getJSONObjcejt("book");
  // continue with parsing book stuff
} else if (jo.has("camera"){
  // same, but for camera
} else if (jo.has("music") {
  // same, but for music
}

然后,您可以使用您解析的书籍,音乐和相机对象填充列表。 如果您想要更智能的解析,请查看gson