我正在从以下网址解析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,我可以填充数据,请帮助。
输出如下图所示。
请帮我解决这个问题。
答案 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。