android Json解析

1.需解析的json文件(中括号[]括起来的是json数组

{
    "HeWeather data service 3.0": [
        {
            "aqi": {
                "city": {
                    "aqi": "28",
                    "co": "0",
                    "no2": "15",
                    "o3": "94",
                    "pm10": "25",
                    "pm25": "13",
                    "qlty": "优",
                    "so2": "2"
                }
            },
            "basic": {
                "city": "北京",
                "cnty": "中国",
                "id": "CN101010100",
                "lat": "39.904000",
                "lon": "116.391000",
                "update": {
                    "loc": "2016-09-05 17:52",
                    "utc": "2016-09-05 09:52"
                }
            },
            "daily_forecast": [
                {
                    "astro": {
                        "sr": "05:46",
                        "ss": "18:39"
                    },
                    "cond": {
                        "code_d": "100",
                        "code_n": "101",
                        "txt_d": "晴",
                        "txt_n": "多云"
                    },
                    "date": "2016-09-05",
                    "hum": "26",
                    "pcpn": "0.7",
                    "pop": "93",
                    "pres": "1009",
                    "tmp": {
                        "max": "31",
                        "min": "20"
                    },
                    "vis": "10",
                    "wind": {
                        "deg": "294",
                        "dir": "无持续风向",
                        "sc": "微风",
                        "spd": "6"
                    }
                },
                ...


2.需获取的数据

"wind_sc":"微风","wind_dir":"无持续风向"
"ss":"18:41","sr":"05:46"
"tmp":{"min":"18","max":"30"},
"txt_d":"雷阵雨""txt_n":"多云"

3.创建类Item

package app.coolwhether.com.weatherapp.entity;

/**
 * Created by kirito on 2016/9/3.
 */
public class Item {
    private String wind_sc;
    private String wind_dir;
    private String tmp_min;
    private String tmp_max;
    private String txt_d;
    private String txt_n;
    private String ss;
    private String sr;
    private String date;

    public String getWind_sc() {
        return wind_sc;
    }

    public void setWind_sc(String wind_sc) {
        this.wind_sc = wind_sc;
    }

    public String getWind_dir() {
        return wind_dir;
    }

    public void setWind_dir(String wind_dir) {
        this.wind_dir = wind_dir;
    }

    public String getTmp_min() {
        return tmp_min;
    }

    public void setTmp_min(String tmp_min) {
        this.tmp_min = tmp_min;
    }

    public String getTxt_d() {
        return txt_d;
    }

    public void setTxt_d(String txt_d) {
        this.txt_d = txt_d;
    }

    public String getTxt_n() {
        return txt_n;
    }

    public void setTxt_n(String txt_n) {
        this.txt_n = txt_n;
    }

    public String getTmp_max() {
        return tmp_max;
    }

    public void setTmp_max(String tmp_max) {
        this.tmp_max = tmp_max;
    }

    public String getSs() {
        return ss;
    }

    public void setSs(String ss) {
        this.ss = ss;
    }

    public String getSr() {
        return sr;
    }

    public void setSr(String sr) {
        this.sr = sr;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }
}
4.从URL获取数据(此处参照: android从URL获取数据

5.json解析类

package app.coolwhether.com.weatherapp.support;

import android.util.Log;

import com.google.gson.Gson;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import app.coolwhether.com.weatherapp.entity.Item;

/**
 * Created by kirito on 2016/9/3.
 */
public class JsonHelper {
    private static final String TAG = "JsonHelper";

    public static Item parseJsonToItem(String json) throws JSONException{
        JSONObject jsonObject = new JSONObject(json);
        JSONArray heWeather = jsonObject.getJSONArray("HeWeather data service 3.0");
        //Log.e(TAG, "parseJsonToList: ---heWeather"+heWeather);
        Item item = new Item();
        JSONObject object = heWeather.getJSONObject(0);//0或是其它数字(数列heWeather的下标都可以)
        JSONArray daily_forecast = null;
        if (object.has("daily_forecast")){
            daily_forecast = object.getJSONArray("daily_forecast");
            //Log.e(TAG, "parseJsonToList: daily_forecast---"+daily_forecast );
            JSONObject obj = daily_forecast.getJSONObject(0);
            JSONObject wind = null;
            if (obj.has("wind")){
                wind = obj.getJSONObject("wind");
                //Log.e(TAG, "parseJsonToList: wind---"+wind );
                item.setWind_dir(wind.optString("dir"));
                item.setWind_sc(wind.optString("sc"));
                //Log.e(TAG, "parseJsonToList: dir,sc"+ wind.optString("dir"));
            }

            JSONObject astro = null;
            if (obj.has("astro")){
                astro = obj.getJSONObject("astro");
                item.setSr(astro.optString("sr"));
                item.setSs(astro.optString("ss"));
                //Log.e(TAG, "parseJsonToItem: ss---"+ astro.optString("ss"));
            }

            JSONObject temp = null;
            if (obj.has("tmp")){
                temp = obj.getJSONObject("tmp");
                item.setTmp_max(temp.optString("max"));
                item.setTmp_min(temp.optString("min"));
                //Log.e(TAG, "parseJsonToItem: max---"+ temp.optString("max"));
            }

            if(obj.has("date")){
                item.setDate(obj.optString("date"));
                //Log.e(TAG, "parseJsonToItem: date---"+ obj.optString("date"));
            }

            if (obj.has("cond")){
                JSONObject cond = obj.getJSONObject("cond");
                item.setTxt_d(cond.optString("txt_d"));
                item.setTxt_n(cond.optString("txt_n"));
                //Log.e(TAG, "parseJsonToItem: txt_d---"+ cond.optString("txt_d"));
            }
        }
        return item;
    }

}

6.调用的方法

item = JsonHelper.parseJsonToItem(s);
//s为URL处获取的json数据

7.然后即可通过返回的item获取需要的数据.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值