注意返回的是JSONObject 还是 JSONAarray 解析时应该在对应的类中怎么写
package com.example.volleytest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.google.gson.Gson;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//第一步获取请求队列
RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this);//getApplicationContext() 生命周期是整个应用
//在请求队列增加请求
mQueue.add(stringRequest);
}
//设置请求操作
StringRequest stringRequest = new StringRequest("https://api.douban.com/v2/book/1220562",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
// Log.d("TAG", response);
dealData(response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("TAG", error.getMessage(), error);
}
});
private void dealData(String data) {
Gson gson = new Gson();
Book book = gson.fromJson(data,Book.class); //区别在于JSONObject是一个{}包裹起来的一个对象(Object),
//而JSONArray则是[]包裹起来的一个数组(Array),
Rating rating = book.getRating();
Log.d("--info",rating.getAverage()+" "+rating.getMax()+" "+rating.getMin()+" "+rating.getNumRaters());
ArrayList<Tag> tag = book.getTags();
Log.d("--info",tag.get(0).getCount()+" "+tag.get(0).getName()+" "+tag.get(0).getTitle());
// Log.d("--info",book.getPublisher()+" "+book.getSummary()+" "+book.getTitle()+" "+book.getTags().size());
}
}
BOOK//定义的对应Gson类
package com.example.volleytest;
import java.util.ArrayList;
public class Book { //使用gson注意 定义的类里的属性姓名要和返回的json数据一致
private String title;
private String publisher;
private String summary;
private ArrayList<Tag> tags; //这样定义返回的是jsonArray
private Rating rating; //这样定义返回的是jsonobject
public Rating getRating() {
return rating;
}
public void setRating(Rating rating) {
this.rating = rating;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
public ArrayList<Tag> getTags() {
return tags;
}
public void setTags(ArrayList<Tag> tags) {
this.tags = tags;
}
}
//解析JsonObject
package com.example.volleytest;
public class Rating {
private int max;
private int numRaters;
private double average;
private int min ;
public int getMax() {
return max;
}
public void setMax(int max) {
this.max = max;
}
public int getNumRaters() {
return numRaters;
}
public void setNumRaters(int numRaters) {
this.numRaters = numRaters;
}
public double getAverage() {
return average;
}
public void setAverage(double average) {
this.average = average;
}
public int getMin() {
return min;
}
public void setMin(int min) {
this.min = min;
}
}
解析JsonArray
package com.example.volleytest;
public class Tag {
private String count;
private String name;
private String title;
public String getCount() {
return count;
}
public void setCount(String count) {
this.count = count;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}