今天刚刚学到json解析,看了一整天,大概了解到json就是你通过一个API(我用的聚合数据的API)发送一个请求,接着会收到json数据,比如说天气预报吧,他会给你发送一大段字符串,大概是未来几天的天气情况了什么的,因为这个数据我们想把它规则的展现在手机屏幕上,但是我们得到的json数据未经处理的话,很乱没有美感,也不方便看,就需要我们解析出这些数据并展现在手机屏幕上

  1. cityName = URLEncoder.encode(city,"UTF-8"); 这句话将汉字转化为UTF-8编码

1.首先是要获取json数据,我是直接使用了已经集成的Volley包,获得的数据,Volley又有get和post方法,这里使用get方法

Volley方法获得json数据:

  1. private void volley_get()
  2. {
  3. String cityName;
  4. String city;
  5. @Override
  6. Toast.makeText(MainActivity.this, cityName, Toast.LENGTH_SHORT).show();
  7. String url = "http://v.juhe.cn/weather/index?format=2&cityname=%E8%8B%8F%E5%B7%9E&=你申请的Key";
  8. /*
  9. * StringRequest中的第一个参数,是我们获取数据所调用的方法 Method.GET
  10. *第二个参数,是我们获得的API的接口 url
  11. *第三个参数,是当请求成功时所调用的参数
  12. * 第四个参数,是请求失败时所调用的参数
  13. * */
  14. StringRequest request = new StringRequest(Method.GET, url, new Response.Listener<String>()
  15. {
  16. @Override
  17. public void onResponse(String s)
  18. {//参数s就是我们请求成功时返回的json数据
  19. Toast.makeText(MainActivity.this, "加载数据成功", Toast.LENGTH_SHORT).show();
  20. }, new Response.ErrorListener()
  21. {
  22. @Override
  23. public void onErrorResponse(VolleyError volleyError)
  24. {
  25. Toast.makeText(MainActivity.this, "对不起,加载数据失败", Toast.LENGTH_SHORT).show();
  26. }
  27. });
  28. request.setTag("abcGet");
  29. MyApplication.getHttpQueues().add(request);//因为Volley方法就是通过请求队列的方法实现的,所以这里要加入队列
  30.  
  31. });
  32.  
  33. }

获得到的天气数据

  1. {"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方法中 请求成功时调用的参数中实现

  1. public void onResponse(String s) { //参数s就是我们请求成功时返回的json数据
  2. // tv_1.setText(s);
  3. String weather_city = null;
  4. String weather_date_y = null;
  5. String weather_dressing_advice= null;
  6. String weather_exercise_index= null;
  7. String weather_temperature= null;
  8. String weather_travel_index= null;
  9. String weather_wea= null;
  10. String weather_week= null;
  11. String weather_wind= null;
  12. //
  13. try {
  14. JSONObject jsonObject = new JSONObject(s);
  15. String resultcode = jsonObject.getString("resultcode");
  16. if(resultcode.equals("200")){
  17. JSONObject resultObject=jsonObject.getJSONObject("result");
  18. JSONObject todayObject=resultObject.getJSONObject("today");
  19. weather_city = todayObject.getString("city");
  20. weather_date_y = todayObject.getString("date_y");
  21. weather_dressing_advice = todayObject.getString("dressing_advice");
  22. weather_exercise_index = todayObject.getString("exercise_index");
  23. weather_temperature = todayObject.getString("temperature");
  24. weather_travel_index = todayObject.getString("travel_index");
  25. weather_wea = todayObject.getString("weather");
  26. weather_week = todayObject.getString("week");
  27. weather_wind = todayObject.getString("wind");
  28. }
  29. } catch (JSONException e) {
  30. e.printStackTrace();
  31. }
  32. tv_1.setText("城市 :"+weather_city);
  33. tv_2.setText("日期 :"+weather_date_y);
  34. tv_3.setText("穿衣指数 :"+weather_dressing_advice);
  35. tv_4.setText("锻炼指数 :"+weather_exercise_index);
  36. tv_5.setText("温度 :"+weather_temperature);
  37. tv_6.setText("旅行指数 :"+weather_travel_index);
  38. tv_7.setText("天气 :"+weather_wea);
  39. tv_8.setText("星期 :"+weather_week);
  40. tv_9.setText("风力 :"+weather_wind);
  41. }
  42. }

操作结果:

android json解析(JSONObject方法实现)的更多相关文章

  1. Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例

    Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例 继上篇json解析,我用了原生的json解析,但是在有些情况下我们不得不承认,一些优秀的json解析框架确实十分的 ...

  2. Android Json解析与总结

    一.JSON定义 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  3. android json 解析简单实例

    Android JSON解析跟JAVA 的JSON解析原理是一样的. Android自带的JSON方式跟方便,不需要导包啥的.不深究原理了,直接上代码: public class JsonActivi ...

  4. Android JSON 解析关键代码

    Android Json 解析其实还是蛮重要的知识点,为什么这么说呢,因为安卓通信大部分的协议都是使用 json 的方式传输,我知道以前大部分是使用的 xml ,但是时代在发展社会在进步,json 成 ...

  5. android json解析及简单例子+Android与服务器端数据交互+Android精彩案例【申明:来源于网络】

    android json解析及简单例子+Android与服务器端数据交互+Android精彩案例[申明:来源于网络] android json解析及简单例子:http://www.open-open. ...

  6. android json解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  7. android Json解析详解

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语 言的支持),从而可以在不同平台间进行数 ...

  8. android Json解析详解(详细代码)

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

  9. 【转】android json解析及简单例子

    JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性.业内主流技术为其提供了完整的解决方案(有点类似于正则表达式 ,获得了当今大部分语言的支持),从而可以在不同平台间进行数据 ...

随机推荐

  1. XML DOM - Range 对象

    Range对象 Range对象表示文档的连续范围区域,如用户在浏览器窗口中用鼠标拖动选中的区域.   dom标准Range对象 在IE中使用TextRange对象 range对象常用的建立方法在开发中 ...

  2. syq小姐姐的分享的历年考试经验

    一>读题 10~20min浏览题目,把握题目方向和做题大致顺序 不要轻敌,最好先看完题目,大概掌握整套题的难度顺序再动手 仔细读题步骤: (1)文件名(也是检查的重点,绝对重要,注意区分l和1和 ...

  3. nyoj-1092-数字分隔(二)

    java大法好啊 思路:单独拿出整数部分分隔 题目链接 import java.math.BigDecimal; import java.util.Scanner; public class Main ...

  4. nyoj-115-城市平乱(dijkstra算法)

     题目链接 /* Name:nyoj-115-城市平乱 Copyright: Author: Date: 2018/4/25 17:28:06 Description: dijkstra模板题 枚举从 ...

  5. POJ--1094--Sorting It All Out||NYOJ--349--Sorting It All Out(拓扑排序)

    NYOJ的数据水一点,POJ过了是真的过了 /* 拓扑排序模板题: 每次输入都要判断有环与有序的情况,如果存在环路或者已经有序可以输出则跳过下面的输入 判断有序,通过是否在一个以上的入度为0的点,存在 ...

  6. url字符串中含中文的转码方法

    凡是用get方法的,url里含中文的,都需要调用上面的函数进行编码.要不然会被当成二进制截断. //URL编码 +(NSString*)urlEncode:(NSString *)str { int  ...

  7. CodeForces - 803F: Coprime Subsequences(莫比乌斯&容斥)

    Let's call a non-empty sequence of positive integers a1, a2... ak coprime if the greatest common div ...

  8. 牛客网 PAT乙级(Basic Level)练习题 1023 考新郎

    题目描述 过年期间,老家举行了一场盛大的集体婚礼,为了使婚礼进行的丰富一些,司仪临时想出了有一个有意思的节目,叫做“考新郎”,具体的操作是这样的: 1. 首先,给每位新娘打扮得几乎一模一样,并盖上大大 ...

  9. QT:QString、QByteArray和char *的转换 【转载】

    原文网址:http://blog.csdn.net/light1028/article/details/7899541 第一种,数据流的方式,这里只说从QByteArray转向QString. QBy ...

  10. MySQL 预处理语句prepare、execute、deallocate的使用

    所以对于中文乱码,需要去check的地方有如下3个:1.mysql窗口的字符编码(xshell连接的远程工具的字符集设置):2.数据库的字符编码(show variables like '%char% ...