首先我们需要定义一个序列化的Bean,这里采用内部类的形式,看起来会比较清晰一些:

1 public classJsonBean {2 publicString a;3 public Listb;4 publicC c;5

6 public static classB {7

8 publicString b1;9

10 publicString b2;11 }12

13 public static classC {14 publicString c1;15 publicString c2;16 }17 }

很多时候大家都是不知道这个Bean是该怎么定义,这里面需要注意几点:

1、内部嵌套的类必须是static的,要不然解析会出错;

2、类里面的属性名必须跟Json字段里面的Key是一模一样的;

3、内部嵌套的用[]括起来的部分是一个List,所以定义为 public List b,而只用{}嵌套的就定义为 public C c,

具体的大家对照Json字符串看看就明白了,不明白的我们可以互相交流,本人也是开发新手!

1 Gson gson = newGson();2 java.lang.reflect.Type type = new TypeToken() {}.getType();3 JsonBean jsonBean = gson.fromJson(json, type);

然后想拿数据就很简单啦,直接在jsonBean里面取就可以了!

如果需要解析的Json嵌套了很多层,同样可以可以定义一个嵌套很多层内部类的Bean,需要细心的对照Json字段来定义哦。

下面我将以一个具体的列子来说明通过Gson方式解析复杂的json数据

1.将要解析的数据如下面的格式

{

"error": 0,

"status": "success",

"date": "2014-05-10",

"results": [

{

"currentCity": "南京",

"weather_data": [

{

"date": "周六(今天, 实时:19℃)",

"dayPictureUrl": "http://api.map.baidu.com/images/weather/day/dayu.png",

"nightPictureUrl": "http://api.map.baidu.com/images/weather/night/dayu.png",

"weather": "大雨",

"wind": "东南风5-6级",

"temperature": "18℃"

},

{

"date": "周日",

"dayPictureUrl": "http://api.map.baidu.com/images/weather/day/zhenyu.png",

"nightPictureUrl": "http://api.map.baidu.com/images/weather/night/duoyun.png",

"weather": "阵雨转多云",

"wind": "西北风4-5级",

"temperature": "21 ~ 14℃"

}

]

}

]

}

2.必须定义如下一些的javaBean数据

Status.java

1 public classStatus2 {3 privateString error;4 privateString status;5 privateString date;6 private Listresults;7 publicString getError()8 {9 returnerror;10 }11 public voidsetError(String error)12 {13 this.error =error;14 }15

16 publicString getStatus()17 {18 returnstatus;19 }20 public voidsetStatus(String status)21 {22 this.status =status;23 }24 publicString getDate()25 {26 returndate;27 }28 public voidsetDate(String date)29 {30 this.date =date;31 }32 public ListgetResults()33 {34 returnresults;35 }36 public void setResults(Listresults)37 {38 this.results =results;39 }40 @Override41 publicString toString()42 {43 return "Status [error=" + error + ", status=" +status44 + ", date=" + date + ", results=" + results + "]";45 }46

Results.java

1 public classResults2 {3 privateString currentCity;4 private Listweather_data;5 publicString getCurrentCity()6 {7 returncurrentCity;8 }9 public voidsetCurrentCity(String currentCity)10 {11 this.currentCity =currentCity;12 }13 public ListgetWeather_data()14 {15 returnweather_data;16 }17 public void setWeather_data(Listweather_data)18 {19 this.weather_data =weather_data;20 }21 @Override22 publicString toString()23 {24 return "Results [currentCity=" + currentCity + ", weather_data="

25 + weather_data + "]";26 }

Weather.java

1 public classWeather {2 privateString date;3 privateString dayPictureUrl;4 privateString nightPictureUrl;5 privateString weather;6 privateString wind;7 privateString temperature;8 publicString getDate() {9 returndate;10 }11 public voidsetDate(String date) {12 this.date =date;13 }14 publicString getDayPictureUrl() {15 returndayPictureUrl;16 }17 public voidsetDayPictureUrl(String dayPictureUrl) {18 this.dayPictureUrl =dayPictureUrl;19 }20 publicString getNightPictureUrl() {21 returnnightPictureUrl;22 }23 public voidsetNightPictureUrl(String nightPictureUrl) {24 this.nightPictureUrl =nightPictureUrl;25 }26 publicString getWeather() {27 returnweather;28 }29 public voidsetWeather(String weather) {30 this.weather =weather;31 }32 publicString getWind() {33 returnwind;34 }35 public voidsetWind(String wind) {36 this.wind =wind;37 }38 publicString getTemperature() {39 returntemperature;40 }41 public voidsetTemperature(String temperature) {42 this.temperature =temperature;43 }44 @Override45 publicString toString() {46 return "Weather [date=" + date + ", dayPictureUrl="

47 + dayPictureUrl + ", nightPictureUrl="

48 + nightPictureUrl + ", weather=" +weather49 + ", wind=" + wind + ", temperature=" +temperature50 + "]";51 }52

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

1 public class MainActivity extendsActivity2 {3 privateButton tojson;4 RequestQueue mQueue;5 StringRequest stringRequest;6 Gson gson;7 String str;8

9   @Override10 protected voidonCreate(Bundle savedInstanceState)11 {12 super.onCreate(savedInstanceState);13 setContentView(R.layout.activity_main);14

15 tojson =(Button)findViewById(R.id.tojson);16 gson = newGson();17

18 mQueue = Volley.newRequestQueue(MainActivity.this);19 //http://10.19.20.12/upgrade/test.txt是测试使用的json数据

20 stringRequest = new StringRequest("http://10.19.20.12/upgrade/test.txt",21 new Response.Listener()22 {23 @Override24 public voidonResponse(String response)25 {26 Log.d("TAG", response);27 System.out.println("response="+response);28 Status status = gson.fromJson(response, Status.class);29 System.out.println("status="+status);30 System.out.println("-------------------------------------");31 List result =status.getResults();32 System.out.println("result="+result);33

34 }35 },36 newResponse.ErrorListener()37 {38 @Override39 public voidonErrorResponse(VolleyError error)40 {41 Log.e("TAG", error.getMessage(), error);42 }43

44 });45

46 tojson.setOnClickListener(newOnClickListener()47 {48 @Override49 public voidonClick(View v)50 {51 mQueue.add(stringRequest);52 }53 });54 }55

56

57

58 }

其中上面的RequestQueue是开源网络库Volley的使用,如果你对该库的使用还不熟悉的话可以参考前面的文章,其中对Volley的讲解也很详细了,相信各位朋友很快便能领悟出来。

gson解析mysql城市json数据_Gson解析复杂的json数据相关推荐

  1. python向kafka发送json数据_python3实现从kafka获取数据,并解析为json格式,写入到mysql中...

    项目需求:将kafka解析来的日志获取到数据库的变更记录,按照订单的级别和订单明细级别写入数据库,一条订单的所有信息包括各种维度信息均保存在一条json中,写入mysql5.7中. 配置信息: [Gl ...

  2. Java解析中国城市Json数据

    由于城市列表基本是固定不变的,App可以读取本地文件来显示城市列表,这里使用Json数据把城市列表保存起来,在代码中解析Json数据显示就方便,在此把它记录下来,这里的城市列表是根据地图得到的,方便以 ...

  3. Android开发--Json数据的解析

    在执行解析数据之前,需要将一个类库应用到你的程序中,下载的地址是: http://code.google.com/p/google-gson/ 下载解压之后你需要将蓝色标记的文件放入到你的程序之中应用 ...

  4. c语言json映射,GitHub - xujun621/cson: 基于C语言的json数据映射解析库

    CSON 基于cJSON,运行于C语言平台的json-struct模型解析工具 简介 CSON是一个简单的cJSON的二次封装,相比于使用原生cJSON一层一层解析的方式,CSON采用模型映射的方式, ...

  5. Android系统 (190)---Android:JSON 简介 amp; 解析方式 讲解(Gson、AS自带org.json、Jackson)

    Android:JSON 简介 & 解析方式 讲解(Gson.AS自带org.json.Jackson) 前言 现今最主流的数据交换格式 非 JSON莫属 今天,我将全面介绍 JSON &am ...

  6. Android系统(96)---Android 数据交换解析框架Gson使用详解

    Android 数据交换解析框架Gson使用详解 Json 是一种文本形式的数据交换格式,比 xml 更为轻量.Json 的解析和生成的方式很多,在 Android 平台上最常用的类库有 Gson 和 ...

  7. mysql mongodb binlog_订阅MongoDB的数据变更比解析mysql的binlog更简单

    前言 我们开源了一个订阅分发mysql的binlog的项目,一直用的非常好,忽然有天开发说能不能支持MongoDB的数据订阅呢,MongoDB的使用度也挺广泛的.安排.经过简单的了解后发现MongoD ...

  8. JSON数据的解析方式

    解析的四种方式 官方解析 谷歌 Gson 解析 阿里巴巴 FastJson 解析 Jackson 解析 案例实操 这里我们就只讨论对象与 json 如何互相转换. 这里我们先创建好 Maven 项目, ...

  9. sql解析json格式字段、sql关联json格式字段,mysql解析json、sql解析json字符串

    sql解析json格式字段.sql关联json格式字段,mysql解析json.sql解析json字符串 sql解析字符串 sql关联json中的某个字段 sql解析字符串 表名user_login ...

最新文章

  1. 深度学习运行python文件,出现跨路径搜索其他module,怎么解决?
  2. 跨专业选修C语言看什么书,跨专业考研如何选择?!!!!!
  3. 文献记录(part61)--基于不完备数据聚类的缺失数据填补方法
  4. GridControl动态添加 颜色列
  5. cvMorphology形态学原理解析及源码分析
  6. mysql时间聚合_11.MySQL数值、日期和时间、信息、聚合函数
  7. 【软件开发底层知识修炼】二十七 C/C++中的指针与数组是不同的
  8. 麦森数(洛谷-P1045)
  9. ROS: global_planner 整体解析
  10. python爬虫之requests模块2
  11. Android measure过程分析
  12. 十分钟读懂 黑客如何入侵Windows 操作系统
  13. Unity基础知识结构总结
  14. 用R语言做数据分析——时间序列分类
  15. 冯乐乐之六,基础光照模型
  16. matlab加速度转化为位移,加速度转换成位移的matlab代码及说明
  17. 通过驱动断链来隐藏驱动
  18. 关于安装anaconda错误:failed to create anaconda menus
  19. oppo手机投屏到电脑上
  20. 使用 htop 和 ps 来监控 Linux 运行

热门文章

  1. R语言ggplot2可视化:在可视化图像中添加对角线(diagonal line)
  2. R语言使用lmPerm包应用于线性模型的置换方法(置换检验、permutation tests)、使用lm模型构建简单线性回归模型、使用lmp函数生成置换检验回归分析模型
  3. pandas将dataframe日期数据列的日期转化为日期当月第一天(每月1号)的日期并生成新的数据列(Setting date to beginning of month in dataframe)
  4. Pandas批量删除dataframe列名中的后缀实战:使用rstrip函数批量删除列名中的后缀(suffix)、使用replace函数批量删除列名中的后缀(suffix)
  5. 什么是信度分析(Reliability)?有哪些信度分析方法?那什么又是效度?
  6. 泊松回归、gamma回归、Tweedie回归等广义线性回归模型GLM的评估指标:校准曲线、 洛伦兹曲线、卡方检验、AIC、BIC、偏差(Deviance)指标
  7. java语言仅支持单重继承_java语言程序设计基础篇习题_复习题_第十一章
  8. NCBI下载SRA数据的4种方法
  9. 有一间计算机教室英语,妙手巧动微机教室实施外语视听教学
  10. JAVA数组编程教程_Java语言编程基础:数组