Android-JSON解析

原创 2015年11月18日 01:35:04

JSON解析记录

下面是将要解析的一个天气json数据

  • 这是一个在谷歌浏览器jsonview插件处理过的显示视图,部分标签相同部分被缩略
{
resultcode: "200",
reason: "successed!",
result: - {
sk: - {
temp: "12",
wind_direction: "西南风",
wind_strength: "1级",
humidity: "66%",
time: "00:20"
},
today: - {
temperature: "12℃~18℃",
weather: "阴转小雨",
weather_id: + {... },
wind: "南风微风",
week: "星期二",
city: "成都",
date_y: "2015年11月17日",
dressing_index: "较舒适",
dressing_advice: "建议着薄外套、开衫牛仔衫裤等服装。年老体弱者应适当添加衣物,宜着夹克衫、薄毛衣等。",
uv_index: "最弱",
comfort_index: "",
wash_index: "不宜",
travel_index: "较适宜",
exercise_index: "较适宜",
drying_index: ""
},
future: - [
+ {
    temperature: "12℃~18℃",
    weather: "阴转小雨",
    weather_id: - 
    {
        fa: "02",
        fb: "07"
    },
    wind: "南风微风",
    week: "星期二",
    date: "20151117"
   },
+ {... },
+ {... },
+ {... },
+ {... },
+ {... },
+ {... }
]
},
error_code: 0
}

我们开始解析数据

  1. 首先需要从网上获取JSON数据,转换成字符串
  2. 然后是对数据字符串进行解析,代码如下:
/**
     * json解析
     * @param jsontext
     * @return
     */
    public static String changeJson(String jsontext)
    {
        //用StringBuilder 来装下所有数据,然后在TextView中显示
        StringBuilder sb = new StringBuilder();
        try {
            //通过json数据的字符串得到一个JSONObject对象
            JSONObject obj = new JSONObject(jsontext);
            //我们通过标签名,就可以获取到当前结构下的值
            String resultcode = obj.getString("resultcode");
            sb.append(resultcode+"\n");
            String reason = obj.getString("reason");
            sb.append(reason+"\n");
            //通过外一层JSONObject对象获取下一层JSONObject对象
            JSONObject objResult = obj.getJSONObject("result");
            JSONObject objSk = objResult.getJSONObject("sk");
            String temp = objSk.getString("temp");
            sb.append(temp+"\n");
            String wind_direction = objSk.getString("wind_direction");
            sb.append(wind_direction+"\n");
            String wind_strength = objSk.getString("wind_strength");
            sb.append(wind_strength+"\n");
            String humidity = objSk.getString("humidity");
            sb.append(humidity+"\n");
            String time = objSk.getString("time");
            sb.append(time+"\n");
            JSONObject objToday = objResult.getJSONObject("today");
            String temperature = objToday.getString("temperature");
            sb.append(temperature+"\n");
            String weather = objToday.getString("weather");
            sb.append(weather+"\n");
            JSONObject objWeatherId = objToday.getJSONObject("weather_id");
            String fa = objWeatherId.getString("fa");
            sb.append(fa+"\n");
            String fb = objWeatherId.getString("fb");
            sb.append(fb+"\n");
            String wind = objToday.getString("wind");
            sb.append(wind+"\n");
            String week = objToday.getString("week");
            sb.append(week+"\n");
            String city = objToday.getString("city");
            sb.append(city+"\n");
            String date_y = objToday.getString("date_y");
            sb.append(date_y+"\n");
            String dressing_index = objToday.getString("dressing_index");
            sb.append(dressing_index+"\n");
            String dressing_advice = objToday.getString("dressing_advice");
            sb.append(dressing_advice+"\n");
            String uv_index = objToday.getString("uv_index");
            sb.append(uv_index+"\n");
            String comfort_index = objToday.getString("comfort_index");
            sb.append(comfort_index+"\n");
            String wash_index = objToday.getString("wash_index");
            sb.append(wash_index+"\n");
            String travel_index = objToday.getString("travel_index");
            sb.append(travel_index+"\n");
            String exercise_index = objToday.getString("exercise_index");
            sb.append(exercise_index+"\n");
            String drying_index = objToday.getString("drying_index");
            sb.append(drying_index+"\n");
            //通过外层JSONObject对象获取下层**中括号**内容
            JSONArray arrFuture = objResult.getJSONArray("future");
            //遍历所有中括号下的几个大括号
            for (int i = 0, length = arrFuture.length(); i < length; i++)
            {
                //通过标签获取第i个大括号JSONObject对象
                JSONObject objArr = arrFuture.getJSONObject(i);
                String temperature_a = objArr.getString("temperature");
                sb.append(temperature_a+"\n");
                String weather_a = objArr.getString("weather");
                sb.append(weather_a+"\n");
                JSONObject objWeatherId_a = objArr.getJSONObject("weather_id");
                String fa_a = objWeatherId_a.getString("fa");
                sb.append(fa_a+"\n");
                String fb_a = objWeatherId_a.getString("fb");
                sb.append(fb_a+"\n");
                String wind_a = objArr.getString("wind");
                sb.append(wind_a+"\n");
                String week_a = objArr.getString("week");
                sb.append(week_a+"\n");
                String date_a = objArr.getString("date");
                sb.append(date_a+"\n");
            }

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return sb.toString();

    }

我的感受

  • 首先在这个访问地址上获取json数据:(别点,自己申请去~~(>_<)~~)
    http://v.juhe.cn/weather/index?format=2&cityname=%E6%88%90%E9%83%BD&key=ea79dbb1c2858555d8cec5d9309838c8
    问号后面的就是要访问的城市,和key值,选择不同的城市就改变cityname的值
  • 如果我要填入一个城市,上一条的cityname字符串需要转一下码,不然出现了城市错误提示。 ~(~ ̄▽ ̄)~我是这样处理的:
    String city = “成都”;
    city = URLEncoder.encode(city, “utf-8”);
    然后将city拼接到地址上

想说的话

  • 博客坚持写,不管怎样,今后学习了新的东西就在这里记录一下,以便今后回顾,也希望小小笔记能帮助你们
  • 如果内容有什么地方不对,望吐槽,希望大家能一起学习和成长
  • 来一句:人外有人,天外有天。三人行必有我师,问问良师益友,会让你受益无穷。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android网络请求解析以及JSON文本

  • 2017年08月08日 14:31
  • 25KB
  • 下载

android中如何解析没有Key的Json数据

新浪微博有一部分json数据如下,你会发现这是个数组,但是数组没有key,数组中的对象也没有key。怎么解析呢?fastjson遇到这种无名数组套无名对象也会报异常。所以建议使用原生的json解析。一...
  • a910626
  • a910626
  • 2015年06月07日 15:07
  • 7219

Android Json解析

  • 2012年08月22日 16:46
  • 327KB
  • 下载

android json 的生成和解析

  • 2015年10月28日 14:03
  • 1.17MB
  • 下载

Android中的xml、json格式数据解析

转载请注明出处:          本博文相关的Demo下载链接:   前言:在开发Android第三方App应用的过程中,特别是涉及到网络请求的App,都会涉及到解析后台返回的数据。而后台返回的数据...

Android(全JSON解析含第三方jar包)

  • 2016年07月11日 22:23
  • 17.4MB
  • 下载

Json解析的方法Android自带的和Gson

  • 2016年03月17日 23:29
  • 6.55MB
  • 下载

说说关于Android使用Gson解析Json所需实体类的那些事~

LZ-Says:技术,真的是日积月累,厚积薄发~ 前言目前解析json的方法有很多种,LZ个人认为使用Gson还是一种很不错的选择,因为使用Gson时,我们只需要考虑将json中参数和实体类属性一一对...

Android---Volley请求天气接口JSON解析

  • 2016年03月16日 16:33
  • 1.19MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android-JSON解析
举报原因:
原因补充:

(最多只允许输入30个字)