我绝对是Android的初学者。现在我开始学习针对HTTP请求和响应的排球。我将响应数据绑定到Listview。我正在制作这样的http get请求。
这是我的具有截击请求的活动类
public class VolleyActivity extends Activity{
private int lastSawFirstListItem;
private int itemLoadedOn;
private ArrayAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.volley_main);
Button getBtn = (Button)findViewById(R.id.btn_get_request);
getBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
ListView listView = (ListView)findViewById(R.id.volleyListView);
adapter = new CustomAdapter(this,new Entity[0]);
listView.setAdapter(adapter);
String url = "http://api.androidhive.info/feed/feed.json";
JsonObjectRequest jsonRequest = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject jsonObject) {
List<Entity> items = new ArrayList<Entity>();
try{
jsonObject = jsonObject.getJSONObject("feed");
//Then how to handle my response collection here
//because this is the combination of array and object collection
}
catch (JSONException e)
{
Toast.makeText(getBaseContext(),"JSON exception",Toast.LENGTH_SHORT).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
});
Volley.newRequestQueue(getBaseContext()).add(jsonRequest);
}
public Entity convertToEntity(JSONObject item) throws JSONException
{
Entity en = new Entity();
en.setId(item.getInt("id"));
en.setName(item.getString("name"));
en.setName(item.getString("url"));
return en;
}
}
这是json链接,我请求http://api.androidhive.info/feed/feed.json
我该如何处理这种组合?我已经发出了抛出错误的ArrayRequest。
我正在处理像这样的响应回调
try{
jsonObject = jsonObject.getJSONObject("feed");
for(int i=0;i<jsonObject.length();i++){
StringBuilder sb = new StringBuilder();
sb.append(i);
String name = jsonObject.getJSONObject(sb.toString()).getString("name");
}
Toast.makeText(getBaseContext(),"ok",Toast.LENGTH_SHORT).show();
}
catch (JSONException e)
{
Toast.makeText(getBaseContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
但它会像截图一样抛出JSONException。
答案 0 :(得分:1)
我得到了答案。这就是我在问题的响应回调中处理json响应的方法,即对象和数组的组合。
List<Entity> items = new ArrayList<Entity>();
try{
JSONArray jsonArray = jsonObject.getJSONArray("feed");
for(int i=0;i<jsonArray.length();i++)
{
JSONObject item = jsonArray.getJSONObject(i);
//work with entity items
}
Toast.makeText(getBaseContext(),"Success",Toast.LENGTH_SHORT).show();
}
catch (JSONException e)
{
Toast.makeText(getBaseContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
答案 1 :(得分:0)
从jsonObject使用获取字符串
String s = jsonObject.getString("sJson"); // here sJosn is the key in jsonObject.
类似地,布尔值使用Boolean b = jsonObject.getBoolean("key")
和整数:int i = jsonObject.getInt("keyint");