android json解析(JSONObject方法实现)
今天刚刚学到json解析,看了一整天,大概了解到json就是你通过一个API(我用的聚合数据的API)发送一个请求,接着会收到json数据,比如说天气预报吧,他会给你发送一大段字符串,大概是未来几天的天气情况了什么的,因为这个数据我们想把它规则的展现在手机屏幕上,但是我们得到的json数据未经处理的话,很乱没有美感,也不方便看,就需要我们解析出这些数据并展现在手机屏幕上
- cityName = URLEncoder.encode(city,"UTF-8"); 这句话将汉字转化为UTF-8编码
1.首先是要获取json数据,我是直接使用了已经集成的Volley包,获得的数据,Volley又有get和post方法,这里使用get方法
Volley方法获得json数据:
- private void volley_get()
- {
- String cityName;
- String city;
- @Override
- Toast.makeText(MainActivity.this, cityName, Toast.LENGTH_SHORT).show();
- String url = "http://v.juhe.cn/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&=你申请的Key";
- /*
- * StringRequest中的第一个参数,是我们获取数据所调用的方法 Method.GET
- *第二个参数,是我们获得的API的接口 url
- *第三个参数,是当请求成功时所调用的参数
- * 第四个参数,是请求失败时所调用的参数
- * */
- StringRequest request = new StringRequest(Method.GET, url, new Response.Listener<String>()
- {
- @Override
- public void onResponse(String s)
- {//参数s就是我们请求成功时返回的json数据
- Toast.makeText(MainActivity.this, "加载数据成功", Toast.LENGTH_SHORT).show();
- }, new Response.ErrorListener()
- {
- @Override
- public void onErrorResponse(VolleyError volleyError)
- {
- Toast.makeText(MainActivity.this, "对不起,加载数据失败", Toast.LENGTH_SHORT).show();
- }
- });
- request.setTag("abcGet");
- MyApplication.getHttpQueues().add(request);//因为Volley方法就是通过请求队列的方法实现的,所以这里要加入队列
- });
- }
获得到的天气数据
- {"resultcode":"200","reason":"successed!","result":{"sk":{"temp":"37","wind_direction":"西风","wind_strength":"2级","humidity":"49%","time":"18:28"},"today":{"temperature":"30℃~38℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西南风微风","week":"星期二","city":"苏州","date_y":"2016年07月26日","dressing_index":"炎热","dressing_advice":"天气炎热,建议着短衫、短裙、短裤、薄型T恤衫等清凉夏季服装。","uv_index":"很强","comfort_index":"","wash_index":"较适宜","travel_index":"较适宜","exercise_index":"较适宜","drying_index":""},"future":[{"temperature":"30℃~38℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西南风微风","week":"星期二","date":"20160726"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西风微风","week":"星期三","date":"20160727"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西南风微风","week":"星期四","date":"20160728"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"南风微风","week":"星期五","date":"20160729"},{"temperature":"28℃~37℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"东风微风","week":"星期六","date":"20160730"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西南风微风","week":"星期日","date":"20160731"},{"temperature":"29℃~39℃","weather":"晴","weather_id":{"fa":"00","fb":"00"},"wind":"西风微风","week":"星期一","date":"20160801"}]},"error_code":0}
然后在上边的volley_get方法中解析json使其规则的显现
在上边的volley_get方法中 请求成功时调用的参数中实现
- public void onResponse(String s) { //参数s就是我们请求成功时返回的json数据
- // tv_1.setText(s);
- String weather_city = null;
- String weather_date_y = null;
- String weather_dressing_advice= null;
- String weather_exercise_index= null;
- String weather_temperature= null;
- String weather_travel_index= null;
- String weather_wea= null;
- String weather_week= null;
- String weather_wind= null;
- //
- try {
- JSONObject jsonObject = new JSONObject(s);
- String resultcode = jsonObject.getString("resultcode");
- if(resultcode.equals("200")){
- JSONObject resultObject=jsonObject.getJSONObject("result");
- JSONObject todayObject=resultObject.getJSONObject("today");
- weather_city = todayObject.getString("city");
- weather_date_y = todayObject.getString("date_y");
- weather_dressing_advice = todayObject.getString("dressing_advice");
- weather_exercise_index = todayObject.getString("exercise_index");
- weather_temperature = todayObject.getString("temperature");
- weather_travel_index = todayObject.getString("travel_index");
- weather_wea = todayObject.getString("weather");
- weather_week = todayObject.getString("week");
- weather_wind = todayObject.getString("wind");
- }
- } catch (JSONException e) {
- e.printStackTrace();
- }
- tv_1.setText("城市 :"+weather_city);
- tv_2.setText("日期 :"+weather_date_y);
- tv_3.setText("穿衣指数 :"+weather_dressing_advice);
- tv_4.setText("锻炼指数 :"+weather_exercise_index);
- tv_5.setText("温度 :"+weather_temperature);
- tv_6.setText("旅行指数 :"+weather_travel_index);
- tv_7.setText("天气 :"+weather_wea);
- tv_8.setText("星期 :"+weather_week);
- tv_9.setText("风力 :"+weather_wind);
- }
- }
操作结果:
android json解析(JSONObject方法实现)的更多相关文章
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...
- Android Json解析与总结
一.JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...
- android json 解析简单实例
Android JSON解析跟JAVA 的JSON解析原理是一样的. Android自带的JSON方式跟方便,不需要导包啥的.不深究原理了,直接上代码: public class JsonActivi ...
- Android JSON 解析关键代码
Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成 ...
- android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】
android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...
- android json解析及简单例子
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- android Json解析详解
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语 言的支持),从而可以在不同平台间进行数 ...
- android Json解析详解(详细代码)
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
- 【转】android json解析及简单例子
JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...
随机推荐
- XML DOM - Range 对象
Range对象 Range对象表示文档的连续范围区域,如用户在浏览器窗口中用鼠标拖动选中的区域. dom标准Range对象 在IE中使用TextRange对象 range对象常用的建立方法在开发中 ...
- syq小姐姐的分享的历年考试经验
一>读题 10~20min浏览题目,把握题目方向和做题大致顺序 不要轻敌,最好先看完题目,大概掌握整套题的难度顺序再动手 仔细读题步骤: (1)文件名(也是检查的重点,绝对重要,注意区分l和1和 ...
- nyoj-1092-数字分隔(二)
java大法好啊 思路:单独拿出整数部分分隔 题目链接 import java.math.BigDecimal; import java.util.Scanner; public class Main ...
- nyoj-115-城市平乱(dijkstra算法)
题目链接 /* Name:nyoj-115-城市平乱 Copyright: Author: Date: 2018/4/25 17:28:06 Description: dijkstra模板题 枚举从 ...
- POJ--1094--Sorting It All Out||NYOJ--349--Sorting It All Out(拓扑排序)
NYOJ的数据水一点,POJ过了是真的过了 /* 拓扑排序模板题: 每次输入都要判断有环与有序的情况,如果存在环路或者已经有序可以输出则跳过下面的输入 判断有序,通过是否在一个以上的入度为0的点,存在 ...
- url字符串中含中文的转码方法
凡是用get方法的,url里含中文的,都需要调用上面的函数进行编码.要不然会被当成二进制截断. //URL编码 +(NSString*)urlEncode:(NSString *)str { int ...
- CodeForces - 803F: Coprime Subsequences(莫比乌斯&容斥)
Let's call a non-empty sequence of positive integers a1, a2... ak coprime if the greatest common div ...
- 牛客网 PAT乙级(Basic Level)练习题 1023 考新郎
题目描述 过年期间,老家举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做“考新郎”,具体的操作是这样的: 1. 首先,给每位新娘打扮得几乎一模一样,并盖上大大 ...
- QT:QString、QByteArray和char *的转换 【转载】
原文网址:http://blog.csdn.net/light1028/article/details/7899541 第一种,数据流的方式,这里只说从QByteArray转向QString. QBy ...
- MySQL 预处理语句prepare、execute、deallocate的使用
所以对于中文乱码,需要去check的地方有如下3个:1.mysql窗口的字符编码(xshell连接的远程工具的字符集设置):2.数据库的字符编码(show variables like '%char% ...