Gson解析和Volley框架并用

    xiaoxiao2022-08-06  38

    package com.example.liuyazhou.mythirdapplication; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import com.android.volley.RequestQueue; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.toolbox.Volley; import weather.Data; import weather.Life; import weather.Info; import weather.Realtime; import weather.Result; import weather.ALLWeather; public class MainActivity extends Activity { private Button button; private String urlJsonWeather = "http://op.juhe.cn/onebox/weather/query?cityname=%E5%8C%97%E4%BA%AC&dtype=json&key=******1b7942cbdcff19a08001"; private static String TAG = MainActivity.class.getSimpleName();/key需要自己申请 private String jsonResponse; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { funWeatherGsonRequest(); } }); } Volley 三 http://blog.csdn.net/guolin_blog/article/details/17612763 public void funWeatherGsonRequest() { RequestQueue mQueue = Volley.newRequestQueue(MainActivity.this); GsonRequest<ALLWeather> gsonRequest = new GsonRequest<ALLWeather>( urlJsonWeather, ALLWeather.class, new Response.Listener<ALLWeather>() { @Override public void onResponse(ALLWeather allWeather) { Log.i(TAG, allWeather.toString()); Log.i(TAG, "reason is: " + allWeather.getReason()); Result result = allWeather.getResult(); Log.i(TAG, "result is: "+result.toString()); Data data = result.getData(); Log.i(TAG, "data is: "+data.toString()); Realtime realtime =data.getRealtime(); Log.i(TAG, "realtime is: "+realtime.toString()); Log.i(TAG, "realtime.getCity_code(): "+ realtime.getCity_code()); Life life = data.getLife(); Log.i(TAG, "life is: "+life.toString()); Log.i(TAG, " life.getDate(): "+ life.getDate()); Info lifeInfo = life.getInfo();///这里对象名是lifeInfo是允许的 Log.i(TAG, "lifeInfo is: "+lifeInfo.toString()); // Log.i(TAG, "chuanyi is: "+lifeInfo.toString()); Log.i(TAG, "chuanyi is: " + lifeInfo.getChuanyi()[0]+","+lifeInfo.getChuanyi()[1]); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } }); mQueue.add(gsonRequest); } } package weather; /** * Created by liuyazhou on 2016/9/15. */ public class ALLWeather { private String reason; private Result result; public String getReason() { return reason; } public void setReason(String reason) { this.reason = reason; } public Result getResult() { return result; } public void setResult(Result result) { this.result = result; } } package weather; /** * Created by liuyazhou on 2016/9/15. */ public class Result { private Data data; public Data getData() { return data; } public void setData(Data data) { this.data = data; } } package weather; /** * Created by liuyazhou on 2016/9/15. */ public class Data { private Realtime realtime; private Life life; public Realtime getRealtime() { return realtime; } public void setRealtime(Realtime realtime) { this.realtime = realtime; } public Life getLife() { return life; } public void setLife(Life life) { this.life = life; } } package weather; /** * Created by liuyazhou on 2016/9/15. */ public class Realtime { // "city_code":"101010100", // "city_name":"北京", // "date":"2016-09-15", // "time":"15:00:00", // "week":4, // "moon":"八月十五", // "dataUptime":1473925023, // private String cityCode; private String city_code; // public String getCityCode() { 返回null // return cityCode; // } // // public void setCityCode(String cityCode) { // this.cityCode = cityCode; // } public String getCity_code() { return city_code; } public void setCity_code(String city_code) { this.city_code = city_code; } } package weather; /** * Created by liuyazhou on 2016/9/15. */ public class Life { private String date; // private Info lifeInfo;错误的,类定义中的属性名、对象名、类名要与json里的key一致 private Info info; public String getDate() { return date; } public void setDate(String date) { this.date = date; } public Info getInfo() { return info; } public void setInfo(Info info) { this.info = info; } } package weather; /** * Created by liuyazhou on 2016/9/15. */ public class Info { // "info":{ // "chuanyi":[ // "热", // "天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。" // ], // "ganmao":[ // "少发", // "各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。" // ], private String[] chuanyi; private String[] ganmao; public String[] getChuanyi() { return chuanyi; } public void setChuanyi(String[] chuanyi) { this.chuanyi = chuanyi; } public String[] getGanmao() { return ganmao; } public void setGanmao(String[] ganmao) { this.ganmao = ganmao; } } package com.example.liuyazhou.mythirdapplication; /** * Created by liuyazhou on 2016/9/15. */ Volley 三 http://blog.csdn.net/guolin_blog/article/details/17612763 import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.toolbox.HttpHeaderParser; import com.google.gson.Gson; import java.io.UnsupportedEncodingException; /** * Created by liuyazhou on 2016/9/15. */ public class GsonRequest<T> extends Request<T> { private final Response.Listener<T> mListener; private Gson mGson; private Class<T> mClass; public GsonRequest(int method, String url, Class<T> clazz, Response.Listener<T> listener, Response.ErrorListener errorListener) { super(method, url, errorListener); mGson = new Gson(); mClass = clazz; mListener = listener; } public GsonRequest(String url, Class<T> clazz, Response.Listener<T> listener, Response.ErrorListener errorListener) { this(Method.GET, url, clazz, listener, errorListener); } @Override protected Response<T> parseNetworkResponse(NetworkResponse response) { try { String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers)); return Response.success(mGson.fromJson(jsonString, mClass), HttpHeaderParser.parseCacheHeaders(response)); } catch (UnsupportedEncodingException e) { return Response.error(new ParseError(e)); } } @Override protected void deliverResponse(T response) { mListener.onResponse(response); } } <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.liuyazhou.mythirdapplication.MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击" android:id="@+id/button" android:layout_below="@+id/textView" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="74dp" /> </RelativeLayout> <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.liuyazhou.mythirdapplication"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> {//AllWeather //返回的JSON数据 "reason":"successed!", "result":{ //Result "data":{ //Data "realtime":{ //Realtime "city_code":"101010100", "city_name":"北京", "date":"2016-09-15", "time":"15:00:00", "week":4, "moon":"八月十五", "dataUptime":1473925023, "weather":{//Weather "temperature":"30", "humidity":"47", "info":"多云", "img":"1" }, "wind":{ //Wind "direct":"西南风", "power":"2级", "offset":null, "windspeed":null } }, "life":{ //Life "date":"2016-9-15", "info":{ //Info "chuanyi":[ "热", "天气热,建议着短裙、短裤、短薄外套、T恤等夏季服装。" ], "ganmao":[ "少发", "各项气象条件适宜,发生感冒机率较低。但请避免长期处于空调房间中,以防感冒。" ], ...................... jar文件需要自己下载
    转载请注明原文地址: https://ju.6miu.com/read-1132125.html
    最新回复(0)