好的,對我的question的回答建議用於Volley實現。我確實嘗試了一些例子,閱讀了一些文章,並且對於Volley我有點興奮,它可以讓我的應用程序生活更輕鬆。但是那裏沒有很多文檔,對於像我這樣的新手來說,我發現它很難實現它。使用Volley對Android JSON進行解析
這裏就是我堅持:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
StringRequest movieReq = new StringRequest(url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response.toString());
arrayList = new ArrayList<HashMap<String, String>>();
try {
jsonArray = jsonObject.getJSONArray("posts");
for (int z = 0; z < jsonArray.length(); z++) {
HashMap<String, String> map = new HashMap<String, String>();
JSONObject jsonObject1 = jsonArray.getJSONObject(z);
String url = jsonObject1.getString("url");
String title = jsonObject1.getString("title");
String content = jsonObject1.getString("content");
map.put(SHAREURL, url);
map.put(TITLE, title);
map.put(CONTENT, content);
JSONArray jsonArray1 = jsonObject1.getJSONArray("attachments");
for (int j = 0; j < jsonArray1.length(); j++) {
JSONObject jsonObject2 = jsonArray1.getJSONObject(j);
String urlImage = jsonObject2.getString("url");
map.put(URL, urlImage);
arrayList.add(map);
}
}
} catch (JSONException e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
listView = (ListView) mActivity.findViewById(android.R.id.list);
adapter = new ListViewAdapter(mActivity, arrayList);
listView.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
},new Response.ErrorListener(){
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.d(TAG, "Error: " + error.getMessage());
}
});
AppController.getInstance().addToRequestQueue(movieReq);
這是使用JSON
"posts" : [{
"title":"Fast and Furious",
"url":"example.com",
"content":"example",
"attachments":[{
"url":"example.jpg" }]}]
排球也有JsonObjectRequest但如果你把String作爲響應,那麼爲什麼不使用GSON或傑克遜庫,反序列化你的文字在一行左右? – inmyth
我從來沒有使用過Gson或Jackson,只是指出我在正確的方向,沒有太多的經驗在這裏 – kinsell
如果你想我可以在Gson代碼如何工作。 – inmyth