前言
Gson是google推出的用来解析json数据的开源框架, 简单的数据格式通过原生的框架JsonObject或者JsonArray还好, 复杂的数据格式的情况下会很繁琐, 了解了一下Gson的简单用法记录下来, 也方便看到这篇blog的同学能够快速上手这个框架
简单使用:
Json语法:
- 数据在名称/值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
Gson解析Bean:
Json数据内容:
1 2 3 4 5 6 7 8 9 10
| { "App": "http://apk.yoolauncher.com/apk/14588716557753.apk", "Apps": "3.42M", "Auth": "邻家胖子", "DC": 11628, "Id": "6510", "Name": "淡雅女子7", "Rem": "<p>when can i see you again,淡雅女子第七季。</p> <p>本主题不包含YOO桌面,必需下载安装YOO桌面才能正常使用.YOO桌面自适配所有机型,占用内存少,可以实现多屏壁纸,新增了天气时钟和一键开关、一键清理、搜索条的插件;YOO桌面拥有海量主题随心换,专业的主题制作团队,海量精美主题免费下载!YOO桌面主题技术支持:143659751.</p>" }
|
** 创建Theme Bean**
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class Bean { private String App; private String Apps; private String Auth; private String DC; private String Id; private String Name; private String Rem; public String getApp() { return App; } public void setApp(String app) { App = app; } public String getApps() { return Apps; } public void setApps(String apps) { Apps = apps; } public String getAuth() { return Auth; } public void setAuth(String auth) { Auth = auth; } public String getDC() { return DC; } public void setDC(String DC) { this.DC = DC; } public String getId() { return Id; } public void setId(String id) { Id = id; } public String getName() { return Name; } public void setName(String name) { Name = name; } public String getRem() { return Rem; } public void setRem(String rem) { Rem = rem; } }
|
解析Bean代码
1 2
| Gson gson = new GsonBuilder().setPrettyPrinting().create(); Bean bean = gson.fromJson(jsonString, Bean.class);
|
Gson解析数组:
Json数据内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| [ { "hotword": "向艳梅斩获金牌", "url": "http://m.yz2.sm.cn/s?q=%E5%90%91%E8%89%B3%E6%A2%85%E6%96%A9%E8%8E%B7%E9%87%91%E7%89%8C&by=hot&from=wm635479" }, { "hotword": "傅园慧网络直播", "url": "http://m.yz2.sm.cn/s?q=%E5%82%85%E5%9B%AD%E6%85%A7%E7%BD%91%E7%BB%9C%E7%9B%B4%E6%92%AD&by=hot&from=wm635479" }, { "hotword": "亲哥偷走23万", "url": "http://m.yz2.sm.cn/s?q=%E4%BA%B2%E5%93%A5%E5%81%B7%E8%B5%B023%E4%B8%87&by=hot&from=wm635479" } ]
|
创建热词Bean
1 2 3 4 5 6 7 8
| public class HotWords { private String hotword; private String url; public String getHotword() { return hotword; } public void setHotword(String hotword) { this.hotword = hotword; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } }
|
解析代码
1 2
| Gson gson = new GsonBuilder().setPrettyPrinting().create(); Bean bean = gson.fromJson(jsonString, new TypeToken<List<Bean>>(){}.getType());
|
复杂解析方式:
内部进行对象 集合嵌套
复杂数据格式: (天气数据)

整体视为 status, 内部包含 results 数组, results 单个项目内包含 weather_data 数组
首先定义status Bean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| public class Status { private String error; private String status; private String date; private List<Results> results; public String getError(){ return error; } public void setError(String error){ this.error = error; } public String getStatus(){ return status; } public void setStatus(String status){ this.status = status; } public String getDate(){ return date; } public void setDate(String date){ this.date = date;} public List<Results> getResults(){ return results;} public void setResults(List<Results> results){ this.results = results; } }
|
定义Results Bean
1 2 3 4 5 6 7 8 9
| public class Results { private String currentCity; private List<Weather> weather_data; public String getCurrentCity() { return currentCity; } public void setCurrentCity(String currentCity) { this.currentCity = currentCity; } public List<Weather> getWeather_data() { return weather_data; } public void setWeather_data(List<Weather> weather_data) { this.weather_data = weather_data; } }
|
定义Weather Bean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class Weather { private String date; private String dayPictureUrl; private String nightPictureUrl; private String weather; private String wind; private String temperature; public String getDate() { return date; } public void setDate(String date) { this.date = date; } public String getDayPictureUrl() { return dayPictureUrl; } public void setDayPictureUrl(String dayPictureUrl) { this.dayPictureUrl = dayPictureUrl; } public String getNightPictureUrl() { return nightPictureUrl; } public void setNightPictureUrl(String nightPictureUrl) { this.nightPictureUrl = nightPictureUrl; } public String getWeather() { return weather; } public void setWeather(String weather) { this.weather = weather; } public String getWind() { return wind; } public void setWind(String wind) { this.wind = wind; } public String getTemperature() { return temperature; } public void setTemperature(String temperature) { this.temperature = temperature; } }
|
解析代码
1 2
| Gson gson = new GsonBuilder().setPrettyPrinting().create(); Status s = gson.fromJson(Constant.themeBean, Status.class);
|