Android菜鳥練習第五課 Gson解析

第一部分  json串
{
    "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℃"
                }
            ]
        }
    ]
}

第二部分  JavaBean部分

public class JsonBean {
    //1、內部嵌套的類必須是static的,要不然解析會出錯;
    //2、類裏面的屬性名必須跟Json字段裏面的Key是一模一樣的;
    //3、內部嵌套的用[]括起來的部分是一個List,所以定義爲 public List<B> b,而只用{}嵌套的就定義爲 public C c
    public String error;
    public String status;
    public String date;
    public List<City> 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<City> getResults() {
        return results;
    }

    public void setResults(List<City> results) {
        this.results = results;
    }

    public static class City {
        public String currentCity;
        public 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_datas) {
            this.weather_data = weather_datas;
        }
    }

    public static class weather {
        public String date;
        public String dayPictureUrl;
        public String nightPictureUrl;
        public String weather;
        public String wind;
        public 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;
        }
    }
}
第三部分 Activity部分
public class MainActivity extends Activity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Gson gson = new Gson();
        java.lang.reflect.Type type = new TypeToken<JsonBean>() {
        }.getType();
        try {
            //將json串轉換爲javaBean
            JsonBean jsonBean = gson.fromJson(getAccetsString(),type);
            } catch (JSONException e) {
                e.printStackTrace();
        }
    }


    //加載assets中的json文件
    public  String getAccetsString() throws JSONException {
        AssetManager assetManager = getAssets();
        String[] files = null;
        InputStream inputStream = null;
        try {
            inputStream = assetManager.open("json.txt");
        } catch (Exception e) {
            Log.e("tag", e.getMessage());
        }
        String result = readTextFile(inputStream);
        return result;
    }

    private String readTextFile(InputStream inputStream) {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        byte buf[] = new byte[1024];
        int len;
        try {
            while ((len = inputStream.read(buf)) != -1) {
                outputStream.write(buf, 0, len);
            }
            outputStream.close();
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return outputStream.toString();

    }
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章