300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > gson解析mysql城市json数据_Gson解析复杂的json数据

gson解析mysql城市json数据_Gson解析复杂的json数据

时间:2022-10-27 10:17:38

相关推荐

gson解析mysql城市json数据_Gson解析复杂的json数据

首先我们需要定义一个序列化的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 Listb,而只用{}嵌套的就定义为 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": "-05-10",

"results": [

{

"currentCity": "南京",

"weather_data": [

{

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

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

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

"weather": "大雨",

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

"temperature": "18℃"

},

{

"date": "周日",

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

"nightPictureUrl": "http://api./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的讲解也很详细了,相信各位朋友很快便能领悟出来。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。