您的位置:首页 > 其它

Gson的简单使用

2016-10-31 17:44 190 查看
注意返回的是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)
4000
{
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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: