json几种不同解析方式

本文转自:https://blog.csdn.net/whx405831799/article/details/42171191


给服务端发送请求后,服务端会返回一连串的数据,这些数据在大部分情况下都是XML格式或者JSON格式。然后JSON相对XML来说解析相对方便一些,所以先说说JSON的解析。

JSON的基本数据格式有这几种:

1.一个JSON对象——JSONObject

{"name":"胡小威" , "age":20 , "male":true}

2.一个JSON数组——JSONArray

[{"name":"胡小威" , "age":20 , "male":true},{"name":"赵小亮" , "age":22 , "male":false}]

3.复杂一点的JSONObject

{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}}

4.复杂一点的JSONArray

[

{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}},

{"name":"赵小亮", "age"=22, "male":false, "address":{"street":"九州港", "city":"珠海","country":"中国"}}

]

5.来个更复杂的,这是我从爱帮公交上扒取的数据

 {"buses":{"bus":[{"last_foot_dist":"0","time":"37","segments":{"segment":[{"line_name":"立珊专线(中南大学学生公寓-长沙火车站)","foot_dist":"362","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);牛耳教育(南阳街口);韭菜园;曙光路口;长岛路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7535","start_stat":"岳麓山南"}]},"foot_dist":"362","dist":"7897"},{"last_foot_dist":"0","time":"41","segments":{"segment":[{"line_name":"旅1路(科教新村-长沙火车站)","foot_dist":"337","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);蔡锷中路口;韭菜园;乔庄;曙光路口;长岛路口;五一东村;车站路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7822","start_stat":"岳麓山南"}]},"foot_dist":"337","dist":"8159"}]}}

 

接下来是解析部分

一、直接解析

1.{"name":"胡小威" , "age":20 , "male":true}

 

Java代码   收藏代码
  1. public void parseJsonObject(String json) {  
  2.         try {  
  3.             JSONObject jsonObject = new JSONObject(json);  
  4.             String name = jsonObject.getString("name");  
  5.             int age = jsonObject.getInt("age");  
  6.             boolean male = jsonObject.getBoolean("male");  
  7.             //接下来该干嘛干嘛  
  8.         } catch (JSONException e) {  
  9.             // TODO Auto-generated catch block  
  10.             e.printStackTrace();  
  11.         }  
  12.     }  

 

 

2.[{"name":"胡小威" , "age":20 , "male":true},{"name":"赵小亮" , "age":22 , "male":false}]

 

 

Java代码   收藏代码
  1. public void parseJSONArray(String json) {  
  2.         try {  
  3.             JSONArray jsonArray = new JSONArray(json);  
  4.             for (int i = 0; i < jsonArray.length(); i++) {  
  5.                 jsonObject = jsonArray.getJSONObject(i);  
  6.                 String name = jsonObject.getString("name");  
  7.                 int age = jsonObject.getInt("age");  
  8.                 boolean male = jsonObject.getBoolean("male");  
  9.                 //接下来该干嘛干嘛  
  10.             }  
  11.         } catch (JSONException e) {  
  12.             // TODO Auto-generated catch block  
  13.             e.printStackTrace();  
  14.         }  
  15.     }  

  

 

3.{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}}

 

 

Java代码   收藏代码
  1. public void parseJsonPerson(String json) {  
  2.         try {  
  3.             JSONObject jsonObject = new JSONObject(json);  
  4.             String name = jsonObject.getString("name");  
  5.             int age = jsonObject.getInt("age");  
  6.             boolean male = jsonObject.getBoolean("male");  
  7.             JSONObject addressJSON = jsonObject.getJSONObject("address");  
  8.             String street = addressJSON.getString("street");  
  9.             String city = addressJSON.getString("city");  
  10.             String country = addressJSON.getString("country");  
  11.             Address address = new Address(street, city, country);  
  12.             Person person = new Person(name, age, male, address);  
  13.         } catch (JSONException e) {  
  14.             // TODO Auto-generated catch block  
  15.             e.printStackTrace();  
  16.         }  
  17.     }  

 

4.

[

{"name":"胡小威", "age"=20, "male":true, "address":{"street":"岳麓山南", "city":"长沙","country":"中国"}},

{"name":"赵小亮", "age"=22, "male":false, "address":{"street":"九州港", "city":"珠海","country":"中国"}}

]

 

 

Java代码   收藏代码
  1. public void parseJsonArrayPerson(String json) {  
  2.         List<Person> persons = new ArrayList<Person>();  
  3.         try {  
  4.             jsonArray = new JSONArray(json);  
  5.             for (int i = 0; i < jsonArray.length(); i++) {  
  6.                 jsonObject = jsonArray.getJSONObject(i);  
  7.                 String name = jsonObject.getString("name");  
  8.                 int age = jsonObject.getInt("age");  
  9.                 boolean male = jsonObject.getBoolean("male");  
  10.                 JSONObject addressJSON = jsonObject.getJSONObject("address");  
  11.                 String street = addressJSON.getString("street");  
  12.                 String city = addressJSON.getString("city");  
  13.                 String country = addressJSON.getString("country");  
  14.                 Address address = new Address(street, city, country);  
  15.                 Person person = new Person(name, age, male, address);  
  16.                 persons.add(person);  
  17.                 Log.v("juno", person.toString());  
  18.             }  
  19.         } catch (JSONException e) {  
  20.             // TODO Auto-generated catch block  
  21.             e.printStackTrace();  
  22.         }  
  23.         Log.v("juno", persons.toString());  
  24.     }  

 

5. {"buses":{"bus":[{"last_foot_dist":"0","time":"37","segments":{"segment":[{"line_name":"立珊专线(中南大学学生公寓-长沙火车站)","foot_dist":"362","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);牛耳教育(南阳街口);韭菜园;曙光路口;长岛路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7535","start_stat":"岳麓山南"}]},"foot_dist":"362","dist":"7897"},{"last_foot_dist":"0","time":"41","segments":{"segment":[{"line_name":"旅1路(科教新村-长沙火车站)","foot_dist":"337","stat_xys":"","stats":"岳麓山南;湖南师大;二里半;岳麓山北;市四医院;华图教育(太平街口);蔡锷中路口;韭菜园;乔庄;曙光路口;长岛路口;五一东村;车站路口;长沙火车站","end_stat":"长沙火车站","line_xys":"","line_dist":"7822","start_stat":"岳麓山南"}]},"foot_dist":"337","dist":"8159"}]}}

 

Java代码   收藏代码
  1. public List<Salution> parseJSON(String str){  
  2.         Log.d("返回的JSON数据:", str);  
  3.         List<Salution> busList = new ArrayList<Salution>();  
  4.       
  5.         try {  
  6.             JSONObject jsonObject = new JSONObject(str);  
  7.             JSONObject busesJSON = jsonObject.getJSONObject("buses");  
  8.             JSONArray busJSArray=busesJSON.getJSONArray("bus");  
  9.             for(int i=0;i<busJSArray.length();i++){  
  10.                 JSONObject busJSObject = busJSArray.getJSONObject(i);  
  11.                 JSONObject segsJSObject=busJSObject.getJSONObject("segments");  
  12.                 JSONArray segJSArray=segsJSObject.getJSONArray("segment");                
  13.                     Salution st=new Salution();  
  14.                                       
  15.                     for(int j=0;j<segJSArray.length();j++){  
  16.                         if(j==0){  
  17.                             JSONObject segJSObject = segJSArray.getJSONObject(j);  
  18.                             st.setLine_name1(segJSObject.getString("line_name"));  
  19.                             Log.d("line_name", segJSObject.getString("line_name"));  
  20.                             st.setStats1(segJSObject.getString("stats"));  
  21.                             st.setEnd_stat1(segJSObject.getString("end_stat"));  
  22.                             st.setStart_stat1(segJSObject.getString("start_stat"));  
  23.                         }  
  24.                         if(j==1){  
  25.                             JSONObject segJSObject = segJSArray.getJSONObject(j);  
  26.                             st.setLine_name2(segJSObject.getString("line_name"));  
  27.                             Log.d("line_name", segJSObject.getString("line_name"));  
  28.                             st.setStats2(segJSObject.getString("stats"));  
  29.                             st.setEnd_stat2(segJSObject.getString("end_stat"));  
  30.                             st.setStart_stat2(segJSObject.getString("start_stat"));  
  31.                         }  
  32.                     }  
  33.                       
  34.                     busList.add(st);      
  35.             }  
  36.             return busList;  
  37.         } catch (JSONException e) {  
  38.             // TODO Auto-generated catch block  
  39.             e.printStackTrace();  
  40.         }  
  41.         return null;  
  42.     }  

 

 这里我只是简单获取了几个我想要的数据。

 

二、使用JSON类库Gson 来解析JSON

Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。

 

首先,从 code.google.com/p/google-gson/downloads/list下载GsonAPI

Java代码   收藏代码
  1. google-gson-1.7.1-release.zip   

 

 再把gson-1.7.jar copy到libs

可以使用两种方法解析

 

①、通过获取JsonReader对象解析JSON数据:

Java代码   收藏代码
  1. String jsonData = "[{\"username\":\"arthinking\",\"userId\":001},{\"username\":\"Jason\",\"userId\":002}]";  
  2. try{  
  3.     JsonReader reader = new JsonReader(new StringReader(jsonData));  
  4.     reader.beginArray();  
  5.     while(reader.hasNext()){  
  6.         reader.beginObject();  
  7.         while(reader.hasNext()){  
  8.             String tagName = reader.nextName();  
  9.             if(tagName.equals("username")){  
  10.                 System.out.println(reader.nextString());  
  11.             }  
  12.             else if(tagName.equals("userId")){  
  13.                 System.out.println(reader.nextString());  
  14.             }  
  15.         }  
  16.         reader.endObject();  
  17.     }  
  18.     reader.endArray();  
  19. }  
  20. catch(Exception e){  
  21.     e.printStackTrace();  
  22. }  

 

 

 

②、通过把JSON数据映射成一个对象,使用Gson对象的fromJson()方法获取一个对象数组进行操作

Java代码   收藏代码
  1. Type listType = new TypeToken<LinkedList<User>>(){}.getType();  
  2. Gson gson = new Gson();  
  3. LinkedList<User> users = gson.fromJson(jsonData, listType);  
  4. for (Iterator iterator = users.iterator(); iterator.hasNext();) {  
  5.     User user = (User) iterator.next();  
  6.     System.out.println(user.getUsername());  
  7.     System.out.println(user.getUserId());  
  8. }  

GSON解析复杂的JSON数组

  在GSON的API中,提供了两个重要的方法:toJson()和fromJson()方法。其中,toJson()方法用来实现将Java对象转换为相应的JSON数据,fromJson()方法则用来实现将JSON数据转换为相应的Java对象。

1.1 toJson()方法

  toJson()方法用于将Java对象转换为相应的JSON数据,主要有以下几种形式:

  (1)String toJson(JsonElement jsonElement);

  (2)String toJson(Object src);

  (3)String toJson(Object src, Type typeOfSrc);

  其中,方法(1)用于将JsonElement对象(可以是JsonObject、JsonArray等)转换成JSON数据;方法(2)用于将指定的Object对象序列化成相应的JSON数据;方法(3)用于将指定的Object对象(可以包括泛型类型)序列化成相应的JSON数据。

1.2 fromJson()方法

  fromJson()方法用于将JSON数据转换为相应的Java对象,主要有以下几种形式:

  (1) T fromJson(JsonElement json, Class classOfT);

  (2) T fromJson(JsonElement json, Type typeOfT);

  (3) T fromJson(JsonReader reader, Type typeOfT);

  (4) T fromJson(Reader reader, Class classOfT);

  (5) T fromJson(Reader reader, Type typeOfT);

  (6) T fromJson(String json, Class classOfT);

  (7) T fromJson(String json, Type typeOfT);

  以上的方法用于将不同形式的JSON数据解析成Java对象。 
   
下面我将以一个具体的列子来说明通过Gson方式解析复杂的json数据 
1.将要解析的数据如下面的格式

服务的端返回的JSON数据

{
    "song_list": [
        {
            "artist_id": "88",
            "language": "国语",
            "pic_big": "http://musicdata.baidu.com/data2/pic/76dc8dc35a361ef018c2c52befabfb03/267709259/267709259.jpg",
            "pic_small": "http://musicdata.baidu.com/data2/pic/eede55e93e4f0353b1eea0a7627e7be1/267709262/267709262.jpg",
            "country": "内地",
            "area": "0",
            "publishtime": "2015-05-20",
            "album_no": "4",
            "lrclink": "http://musicdata.baidu.com/data2/lrc/ac66a881bd5cb97ad351936606c37495/266097259/266097259.lrc",
            "copy_type": "1",
            "hot": "1314161",
            "all_artist_ting_uid": "2517",
            "resource_type": "0",
            "is_new": "0",
            "rank_change": "0",
            "rank": "1",
            "all_artist_id": "88",
            "style": "流行",
            "del_status": "0",
            "relate_status": "0",
            "toneid": "0",
            "all_rate": "64,128,192,256,320,flac",
            "sound_effect": "0",
            "file_duration": 0,
            "has_mv_mobile": 0,
            "versions": "",
            "bitrate_fee": "{\"0\":\"0|0\",\"1\":\"0|0\"}",
            "song_id": "242078437",
            "title": "演员",
            "ting_uid": "2517",
            "author": "薛之谦",
            "album_id": "241838068",
            "album_title": "初学者",
            "is_first_publish": 0,
            "havehigh": 2,
            "charge": 0,
            "has_mv": 0,
            "learn": 1,
            "song_source": "web",
            "piao_id": "0",
            "korean_bb_song": "0",
            "resource_type_ext": "0",
            "mv_provider": "0000000000",
            "artist_name": "薛之谦"
        }
    ],
    "billboard": {
        "billboard_type": "2",
        "billboard_no": "1906",
        "update_date": "2016-07-24",
        "billboard_songnum": "587",
        "havemore": 1,
        "name": "热歌榜",
        "comment": "该榜单是根据百度音乐平台歌曲每周播放量自动生成的数据榜单,统计范围为百度音乐平台上的全部歌曲,每日更新一次",
        "pic_s640": "http://b.hiphotos.baidu.com/ting/pic/item/5d6034a85edf8db1194683910b23dd54574e74df.jpg",
        "pic_s444": "http://d.hiphotos.baidu.com/ting/pic/item/c83d70cf3bc79f3d98ca8e36b8a1cd11728b2988.jpg",
        "pic_s260": "http://a.hiphotos.baidu.com/ting/pic/item/838ba61ea8d3fd1f1326c83c324e251f95ca5f8c.jpg",
        "pic_s210": "http://business.cdn.qianqian.com/qianqian/pic/bos_client_58c1700bf56062108d8d622a95708032.jpg",
        "web_url": "http://music.baidu.com/top/dayhot"
    },
    "error_code": 22000
}

2.必须定义如下一些的实体类数据 
注意:在定义实体类是要与服务器返回的json字段要完全一致。 
MusicListResponse.java 
里边定义的是服务端返回的json数据,遇到[……]我用了list集合定义它的类型

public class MusicListResponse {
    private List<Music> song_list;
    private BillBoard billboard;
    private int error_code;

    public MusicListResponse() {
    }

    public MusicListResponse(List<Music> song_list, BillBoard billboard,
            int error_code) {
        super();
        this.song_list = song_list;
        this.billboard = billboard;
        this.error_code = error_code;
    }
    public List<Music> getSong_list() {
        return song_list;
    }
    public void setSong_list(List<Music> song_list) {
        this.song_list = song_list;
    }
    public BillBoard getBillboard() {
        return billboard;
    }
    public void setBillboard(BillBoard billboard) {
        this.billboard = billboard;
    }
    public int getError_code() {
        return error_code;
    }
    public void setError_code(int error_code) {
        this.error_code = error_code;
    }
}

BillBoard.java 
这是BillBoard的实体类,里面定义的是 “billboard”: {……}内的json字段 
声明它们的无参和有参的构造方法,还有它们的get和set方法

public class BillBoard {
    private int havemore;
    private String billboard_type;
    private String billboard_no;
    private String update_date;
    private String billboard_songnum;
    private String name;
    private String comment;
    private String pic_s640;
    private String pic_s444;
    private String pic_s260;
    private String pic_s210;
    private String web_url;

    public BillBoard() {
    }

    public BillBoard(int havemore, String billboard_type, String billboard_no,
            String update_date, String billboard_songnum, String name,
            String comment, String pic_s640, String pic_s444, String pic_s260,
            String pic_s210, String web_url) {
        super();
        this.havemore = havemore;
        this.billboard_type = billboard_type;
        this.billboard_no = billboard_no;
        this.update_date = update_date;
        this.billboard_songnum = billboard_songnum;
        this.name = name;
        this.comment = comment;
        this.pic_s640 = pic_s640;
        this.pic_s444 = pic_s444;
        this.pic_s260 = pic_s260;
        this.pic_s210 = pic_s210;
        this.web_url = web_url;
    }

    public int getHavemore() {
        return havemore;
    }
    public void setHavemore(int havemore) {
        this.havemore = havemore;
    }
    public String getBillboard_type() {
        return billboard_type;
    }
    public void setBillboard_type(String billboard_type) {
        this.billboard_type = billboard_type;
    }
    public String getBillboard_no() {
        return billboard_no;
    }
    public void setBillboard_no(String billboard_no) {
        this.billboard_no = billboard_no;
    }
    public String getUpdate_date() {
        return update_date;
    }
    public void setUpdate_date(String update_date) {
        this.update_date = update_date;
    }
    public String getBillboard_songnum() {
        return billboard_songnum;
    }
    public void setBillboard_songnum(String billboard_songnum) {
        this.billboard_songnum = billboard_songnum;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getComment() {
        return comment;
    }
    public void setComment(String comment) {
        this.comment = comment;
    }
    public String getPic_s640() {
        return pic_s640;
    }
    public void setPic_s640(String pic_s640) {
        this.pic_s640 = pic_s640;
    }
    public String getPic_s444() {
        return pic_s444;
    }
    public void setPic_s444(String pic_s444) {
        this.pic_s444 = pic_s444;
    }
    public String getPic_s260() {
        return pic_s260;
    }
    public void setPic_s260(String pic_s260) {
        this.pic_s260 = pic_s260;
    }
    public String getPic_s210() {
        return pic_s210;
    }
    public void setPic_s210(String pic_s210) {
        this.pic_s210 = pic_s210;
    }
    public String getWeb_url() {
        return web_url;
    }
    public void setWeb_url(String web_url) {
        this.web_url = web_url;
    }
}

Music.java 
这是Music的实体类,里面定义的是 “song_list”: [{……},{……}……]内的json字段,声明它们的无参和有参的构造方法,还有它们的get和set方法。(要以服务端返回的数据,完全一致)

public class Music {
    private int file_duration;
    private int has_mv_mobile;
    private int is_first_publish;
    private int havehigh;
    private int charge;
    private int has_mv;
    private int learn;

    private String artist_id;
    private String language;
    private String pic_big;
    private String pic_small;
    private String country;
    private String area;
    private String publishtime;
    private String album_no;
    private String lrclink;
    private String copy_type;
    private String hot;
    private String all_artist_ting_uid;
    private String resource_type;
    private String is_new;
    private String rank_change;
    private String rank;
    private String all_artist_id;
    private String style;
    private String del_status;
    private String relate_status;
    private String toneid;
    private String all_rate;
    private String sound_effect;
    private String versions;
    private String bitrate_fee;
    private String song_id;
    private String title;
    private String ting_uid;
    private String author;
    private String album_id;
    private String album_title;
    private String song_source;
    private String piao_id;
    private String korean_bb_song;
    private String resource_type_ext;
    private String mv_provider;
    private String artist_name;

    public Music() {
    }

    public Music(int file_duration, int has_mv_mobile, int is_first_publish,
            int havehigh, int charge, int has_mv, int learn, String artist_id,
            String language, String pic_big, String pic_small, String country,
            String area, String publishtime, String album_no, String lrclink,
            String copy_type, String hot, String all_artist_ting_uid,
            String resource_type, String is_new, String rank_change,
            String rank, String all_artist_id, String style, String del_status,
            String relate_status, String toneid, String all_rate,
            String sound_effect, String versions, String bitrate_fee,
            String song_id, String title, String ting_uid, String author,
            String album_id, String album_title, String song_source,
            String piao_id, String korean_bb_song, String resource_type_ext,
            String mv_provider, String artist_name) {
        super();
        this.file_duration = file_duration;
        this.has_mv_mobile = has_mv_mobile;
        this.is_first_publish = is_first_publish;
        this.havehigh = havehigh;
        this.charge = charge;
        this.has_mv = has_mv;
        this.learn = learn;
        this.artist_id = artist_id;
        this.language = language;
        this.pic_big = pic_big;
        this.pic_small = pic_small;
        this.country = country;
        this.area = area;
        this.publishtime = publishtime;
        this.album_no = album_no;
        this.lrclink = lrclink;
        this.copy_type = copy_type;
        this.hot = hot;
        this.all_artist_ting_uid = all_artist_ting_uid;
        this.resource_type = resource_type;
        this.is_new = is_new;
        this.rank_change = rank_change;
        this.rank = rank;
        this.all_artist_id = all_artist_id;
        this.style = style;
        this.del_status = del_status;
        this.relate_status = relate_status;
        this.toneid = toneid;
        this.all_rate = all_rate;
        this.sound_effect = sound_effect;
        this.versions = versions;
        this.bitrate_fee = bitrate_fee;
        this.song_id = song_id;
        this.title = title;
        this.ting_uid = ting_uid;
        this.author = author;
        this.album_id = album_id;
        this.album_title = album_title;
        this.song_source = song_source;
        this.piao_id = piao_id;
        this.korean_bb_song = korean_bb_song;
        this.resource_type_ext = resource_type_ext;
        this.mv_provider = mv_provider;
        this.artist_name = artist_name;
    }
    public int getFile_duration() {
        return file_duration;
    }
    public void setFile_duration(int file_duration) {
        this.file_duration = file_duration;
    }
    public int getHas_mv_mobile() {
        return has_mv_mobile;
    }
    public void setHas_mv_mobile(int has_mv_mobile) {
        this.has_mv_mobile = has_mv_mobile;
    }
    public int getIs_first_publish() {
        return is_first_publish;
    }
    public void setIs_first_publish(int is_first_publish) {
        this.is_first_publish = is_first_publish;
    }
    public int getHavehigh() {
        return havehigh;
    }
    public void setHavehigh(int havehigh) {
        this.havehigh = havehigh;
    }
    public int getCharge() {
        return charge;
    }
    public void setCharge(int charge) {
        this.charge = charge;
    }
    public int getHas_mv() {
        return has_mv;
    }
    public void setHas_mv(int has_mv) {
        this.has_mv = has_mv;
    }
    public int getLearn() {
        return learn;
    }
    public void setLearn(int learn) {
        this.learn = learn;
    }
    public String getArtist_id() {
        return artist_id;
    }
    public void setArtist_id(String artist_id) {
        this.artist_id = artist_id;
    }
    public String getLanguage() {
        return language;
    }
    public void setLanguage(String language) {
        this.language = language;
    }
    public String getPic_big() {
        return pic_big;
    }
    public void setPic_big(String pic_big) {
        this.pic_big = pic_big;
    }
    public String getPic_small() {
        return pic_small;
    }
    public void setPic_small(String pic_small) {
        this.pic_small = pic_small;
    }
    public String getCountry() {
        return country;
    }
    public void setCountry(String country) {
        this.country = country;
    }
    public String getArea() {
        return area;
    }
    public void setArea(String area) {
        this.area = area;
    }
    public String getPublishtime() {
        return publishtime;
    }
    public void setPublishtime(String publishtime) {
        this.publishtime = publishtime;
    }
    public String getAlbum_no() {
        return album_no;
    }
    public void setAlbum_no(String album_no) {
        this.album_no = album_no;
    }
    public String getLrclink() {
        return lrclink;
    }
    public void setLrclink(String lrclink) {
        this.lrclink = lrclink;
    }
    public String getCopy_type() {
        return copy_type;
    }
    public void setCopy_type(String copy_type) {
        this.copy_type = copy_type;
    }
    public String getHot() {
        return hot;
    }
    public void setHot(String hot) {
        this.hot = hot;
    }
    public String getAll_artist_ting_uid() {
        return all_artist_ting_uid;
    }
    public void setAll_artist_ting_uid(String all_artist_ting_uid) {
        this.all_artist_ting_uid = all_artist_ting_uid;
    }
    public String getResource_type() {
        return resource_type;
    }
    public void setResource_type(String resource_type) {
        this.resource_type = resource_type;
    }
    public String getIs_new() {
        return is_new;
    }
    public void setIs_new(String is_new) {
        this.is_new = is_new;
    }
    public String getRank_change() {
        return rank_change;
    }
    public void setRank_change(String rank_change) {
        this.rank_change = rank_change;
    }
    public String getRank() {
        return rank;
    }
    public void setRank(String rank) {
        this.rank = rank;
    }
    public String getAll_artist_id() {
        return all_artist_id;
    }
    public void setAll_artist_id(String all_artist_id) {
        this.all_artist_id = all_artist_id;
    }
    public String getStyle() {
        return style;
    }
    public void setStyle(String style) {
        this.style = style;
    }
    public String getDel_status() {
        return del_status;
    }
    public void setDel_status(String del_status) {
        this.del_status = del_status;
    }
    public String getRelate_status() {
        return relate_status;
    }
    public void setRelate_status(String relate_status) {
        this.relate_status = relate_status;
    }
    public String getToneid() {
        return toneid;
    }
    public void setToneid(String toneid) {
        this.toneid = toneid;
    }
    public String getAll_rate() {
        return all_rate;
    }
    public void setAll_rate(String all_rate) {
        this.all_rate = all_rate;
    }
    public String getSound_effect() {
        return sound_effect;
    }
    public void setSound_effect(String sound_effect) {
        this.sound_effect = sound_effect;
    }
    public String getVersions() {
        return versions;
    }
    public void setVersions(String versions) {
        this.versions = versions;
    }
    public String getBitrate_fee() {
        return bitrate_fee;
    }
    public void setBitrate_fee(String bitrate_fee) {
        this.bitrate_fee = bitrate_fee;
    }
    public String getSong_id() {
        return song_id;
    }
    public void setSong_id(String song_id) {
        this.song_id = song_id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getTing_uid() {
        return ting_uid;
    }
    public void setTing_uid(String ting_uid) {
        this.ting_uid = ting_uid;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
    public String getAlbum_id() {
        return album_id;
    }
    public void setAlbum_id(String album_id) {
        this.album_id = album_id;
    }
    public String getAlbum_title() {
        return album_title;
    }
    public void setAlbum_title(String album_title) {
        this.album_title = album_title;
    }
    public String getSong_source() {
        return song_source;
    }
    public void setSong_source(String song_source) {
        this.song_source = song_source;
    }
    public String getPiao_id() {
        return piao_id;
    }
    public void setPiao_id(String piao_id) {
        this.piao_id = piao_id;
    }
    public String getKorean_bb_song() {
        return korean_bb_song;
    }
    public void setKorean_bb_song(String korean_bb_song) {
        this.korean_bb_song = korean_bb_song;
    }
    public String getResource_type_ext() {
        return resource_type_ext;
    }
    public void setResource_type_ext(String resource_type_ext) {
        this.resource_type_ext = resource_type_ext;
    }
    public String getMv_provider() {
        return mv_provider;
    }
    public void setMv_provider(String mv_provider) {
        this.mv_provider = mv_provider;
    }
    public String getArtist_name() {
        return artist_name;
    }
    public void setArtist_name(String artist_name) {
        this.artist_name = artist_name;
    }
}

然后具体的实体类定义好了就将解析数据了,下面就是我的解析数据类

public class MainActivity extends Activity {
    private RequestQueue queue;
    protected MusicListResponse resp;
    private private List<Music> musics;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //发送http请求加载音乐列表数据
        loadMusics();
    }
    /**
     * 加载所有音乐数据
     */
    private void loadMusics() {
        //1.创建volley的  RequestQueue 
        queue = Volley.newRequestQueue(this);
        //2. StringRequest
        String url = "http://tingapi.tiantian.com/v1/restserver/ting?from=qianqian&version=2.1.0&method=tiantian.ting.billboard.billList&format=json&type=2&offset=0&size=50";
        StringRequest req = new StringRequest(url, new Listener<String>() {
            public void onResponse(String response) {
                //使用gson解析json字符串
                Gson gson = new Gson();
                resp = gson.fromJson(response, MusicListResponse.class);
                musics = resp.getSong_list();
            }
        }, new ErrorListener() {
            public void onErrorResponse(VolleyError error) {
                Log.e("error", error.getMessage());
            }
        });
        //3. add()
        queue.add(req);
    }
}   

猜你喜欢

转载自blog.csdn.net/s297485987/article/details/80331197