好的,对我的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