借助和风天气API成功获取到了我想要的天气信息,但在怎么提取出我想要的数据上又遇到了问题。

{"HeWeather data service 3.0":[{"basic":{"city":"余姚","cnty":"中国","id":"CN101210404","lat":"29.948000","lon":"121.172000","update":{"loc":"2016-02-06 14:58","utc":"2016-02-06 06:58"}},"daily_forecast":[{"astro":{"sr":"06:42","ss":"17:36"},"cond":{"code_d":"101","code_n":"100","txt_d":"多云","txt_n":"晴"},"date":"2016-02-06","hum":"44","pcpn":"0.0","pop":"2","pres":"1030","tmp":{"max":"6","min":"-2"},"vis":"10","wind":{"deg":"324","dir":"西北风","sc":"3-4","spd":"12"}},{"astro":{"sr":"06:41","ss":"17:36"},"cond":{"code_d":"100","code_n":"100","txt_d":"晴","txt_n":"晴"},"date":"2016-02-07","hum":"31","pcpn":"0.0","pop":"0","pres":"1024","tmp":{"max":"9","min":"-2"},"vis":"10","wind":{"deg":"282","dir":"西北风","sc":"3-4","spd":"12"}},{"astro":{"sr":"06:41","ss":"17:37"},"cond":{"code_d":"100","code_n":"100","txt_d":"晴","txt_n":"晴"},"date":"2016-02-08","hum":"32","pcpn":"0.0","pop":"0","pres":"1024","tmp":{"max":"14","min":"1"},"vis":"10","wind":{"deg":"274","dir":"西风","sc":"微风","spd":"6"}},{"astro":{"sr":"06:40","ss":"17:38"},"cond":{"code_d":"100","code_n":"100","txt_d":"晴","txt_n":"晴"},"date":"2016-02-09","hum":"30","pcpn":"0.0","pop":"0","pres":"1023","tmp":{"max":"16","min":"6"},"vis":"10","wind":{"deg":"95","dir":"南风","sc":"3-4","spd":"12"}},{"astro":{"sr":"06:39","ss":"17:39"},"cond":{"code_d":"101","code_n":"101","txt_d":"多云","txt_n":"多云"},"date":"2016-02-10","hum":"51","pcpn":"0.0","pop":"0","pres":"1020","tmp":{"max":"18","min":"8"},"vis":"10","wind":{"deg":"167","dir":"东南风","sc":"3-4","spd":"10"}},{"astro":{"sr":"06:38","ss":"17:40"},"cond":{"code_d":"300","code_n":"101","txt_d":"阵雨","txt_n":"多云"},"date":"2016-02-11","hum":"60","pcpn":"0.3","pop":"51","pres":"1015","tmp":{"max":"19","min":"10"},"vis":"10","wind":{"deg":"177","dir":"南风","sc":"微风","spd":"9"}},{"astro":{"sr":"06:38","ss":"17:40"},"cond":{"code_d":"101","code_n":"101","txt_d":"多云","txt_n":"多云"},"date":"2016-02-12","hum":"54","pcpn":"7.0","pop":"50","pres":"1010","tmp":{"max":"20","min":"11"},"vis":"10","wind":{"deg":"241","dir":"南风","sc":"3-4","spd":"11"}}],"hourly_forecast":[{"date":"2016-02-06 16:00","hum":"46","pop":"1","pres":"1030","tmp":"5","wind":{"deg":"326","dir":"西北风","sc":"3-4","spd":"26"}},{"date":"2016-02-06 19:00","hum":"50","pop":"0","pres":"1031","tmp":"3","wind":{"deg":"325","dir":"西北风","sc":"3-4","spd":"19"}},{"date":"2016-02-06 22:00","hum":"55","pop":"0","pres":"1031","tmp":"2","wind":{"deg":"308","dir":"西北风","sc":"微风","spd":"14"}}],"now":{"cond":{"code":"101","txt":"多云"},"fl":"3","hum":"54","pcpn":"0","pres":"1029","tmp":"3","vis":"6","wind":{"deg":"330","dir":"西风","sc":"5-6","spd":"30"}},"status":"ok","suggestion":{"comf":{"brf":"较不舒适","txt":"白天天气晴好,但仍会使您感觉偏冷,不很舒适,请注意适时添加衣物,以防感冒。"},"cw":{"brf":"较适宜","txt":"较适宜洗车,未来一天无雨,风力较小,擦洗一新的汽车至少能保持一天。"},"drsg":{"brf":"冷","txt":"天气冷,建议着棉服、羽绒服、皮夹克加羊毛衫等冬季服装。年老体弱者宜着厚棉衣、冬大衣或厚羽绒服。"},"flu":{"brf":"易发","txt":"昼夜温差很大,易发生感冒,请注意适当增减衣服,加强自我防护避免感冒。"},"sport":{"brf":"较不宜","txt":"天气较好,但考虑天气寒冷,风力较强,推荐您进行室内运动,若户外运动请注意保暖并做好准备活动。"},"trav":{"brf":"一般","txt":"天空状况还是比较好的,但温度稍微有点低,且风稍大,会让您感觉些许凉意。外出请注意防风。"},"uv":{"brf":"最弱","txt":"属弱紫外线辐射天气,无需特别防护。若长期在户外,建议涂擦SPF在8-12之间的防晒护肤品。"}}}]}

  这串JSON和我以前学习JSON解析时的完全不一样,字典和数组一层套一层,看得头都晕了。还好有JSON在线视图查看器,导入后可以清晰的看到层次结构:

  现在就好办多了,只要一层层地把数据剥出来就OK

NSArray *preData = dict[ @"HeWeather data service 3.0" ];
];
NSDictionary *basic = weatherData[@"basic" ];
NSArray *dailyForecast = weatherData[@"daily_forecast" ];
NSDictionary *now = weatherData[@"now" ];
 

简单天气应用开发——解析HeWeather JSON的更多相关文章

  1. IOS开发--解析复杂json数据

    json的自我介绍:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.JSON采用完全独立于语言的文本格式,这些特性使JSON成为理想的数据交换语言.易于人阅 ...

  2. 简单天气应用开发——API接口

    寒假回家无事,想到自学iOS开发已有一段时间,还没做过真正自己的应用,就起了做一个天气预报App的念头. 想到就做.天气预报第一步自然是找到好用的API接口来获取天气信息.在百度上搜索了一圈,找到的都 ...

  3. 简单天气应用开发——自定义TableView

    顺利解析JSON数据后,天气数据已经可以随意提取了,现在要做的就是建立一个简单的UI. 实况信息较为简单,几个Lable就可以解决.主要是七天天气预报有点麻烦,那是一个由七个字典构成的数组,需要提取出 ...

  4. iOS开发网络篇—JSON数据的解析

    iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...

  5. 简单快速的让你的json解析速度快上加快

    背景 最近小编在做公司的一个需求.要求是把系统内的一些大型文本文件上传到第三方那里,而且第三方要求的交互数据的方式是采用post请求发送json串的形式进行的. 问题 做到中途才发现问题,由于单个文本 ...

  6. 5分钟让你学会用最高效的工具解析所有Json

    如果你是一个Android开发工程师,学会解析Json字符串是你的必修课,本篇文章主要以实例的方式手把手教你怎么做,花五分钟时间阅读本篇文章你就可以学会解析所有的Json字符串啦. 准备: json字 ...

  7. 基于Django进行简单的微信开发

    代码地址如下:http://www.demodashi.com/demo/11756.html 一.微信公众号的准备: 1. 注册 访问地址:https://mp.weixin.qq.com/ 按照提 ...

  8. 最强常用开发库总结 - JSON库详解

    最强常用开发库总结 - JSON库详解 JSON应用非常广泛,对于Java常用的JSON库要完全掌握.@pdai JSON简介 JSON是什么 JSON 指的是 JavaScript 对象表示法(Ja ...

  9. fastjson解析任意json

    fastjson解析任意json到bean 解析案例的代码 package com.base.config; import java.util.List; import com.alibaba.fas ...

随机推荐

  1. arcEngine添加标注(上)

    arcEngine添加标注有3个技术点:1,获得图层的属性字段:2,初始化符号显示控件:3,添加标注. 获得图层的属性字段:   //每个图层都是一个表的图形化显示,ILayer跟ITale可以互相转 ...

  2. CF卡是什么

    CF卡(Compact Flash)最初是一种用于便携式电子设备的数据存储设备.作为一种存储设备,它革命性的使用了闪存,于1994年首次由SanDisk公司生产并制定了相关规范.当前,它的物理格式已经 ...

  3. Delphi 函数指针(三大好处:灵活,委托的本质,回调机制),还可把函数指针当参数传入

    首先学习: 指向非对象(一般的)函数/过程的函数指针 Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针.函数指针的声明只需要参数列表:如果是函数,再加个返回值.例如声明 ...

  4. 获取EIP(汇编语言直接给Delphi变量赋值)

    var EIP: Cardinal; procedure GetEIP(); stdcall; asm pop eax; mov EIP,eax; push eax; end; procedure T ...

  5. padding-top、margin-top和top的区别

    padding-top:10px;是指容器内的内容距离容器的顶部有10个像素,是包含在容器内的: margin-top:10px;是指容器本身的顶部距离其他容器有10个像素,不包含在容器内: top: ...

  6. 微信token认证方法原理

    var http = require('http'); var url = require("url"); var crypto = require("crypto&qu ...

  7. Cookie、Session

    Cookie.Session Cookie 保存在浏览器端. 4kb 只能保存字符串,还不能是中文. 获取:Request.getCookies(); 设置时间:setMaxAge(); 小于零是浏览 ...

  8. iOS开发基本须要

        iOS开发基本须要 1 准备好对应的硬件和软件配置------基于Intel处理器的Mac操作系统 2 具有C++,Java或其它面向对象编程语言的开发经验 3 最新的iphone SDK的下 ...

  9. 简单C#文字转语音

    跟着微软走妥妥的,C#文字转语音有很多参数我就不说了,毕竟我也是初学者.跟大家分享最简单的方法,要好的效果得自己琢磨喽: 先添加引用System.Speech程序集: using System; us ...

  10. C++中operator关键字(重载操作符)

    operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...