JSON

Swift JSON 数据

字号+ 作者:H5之家 来源:H5之家 2017-01-26 16:01 我要评论( )

Swift JSON 数据,Swift 与 JSON 数据我们大家平时在开发 App 的时候,相信接触最多的就是 JSON 数据了。只要你的 App 有读取网络数据的功能,你就免不了要与 JSO

正文

Swift 与 JSON 数据

我们大家平时在开发 App 的时候,相信接触最多的就是 JSON 数据了。只要你的 App 有读取网络数据的功能,你就免不了要与 JSON 打交道。比如你做一个新闻 App,你要读取和解析新闻数据,这样才能显示给用户。

那么我们今天就来了解一下 JSON 以及它在 App 中的应用吧。

在前两节我们会介绍 JSON 数据格式,如果您已经对 JSON 比较了解了,那么也可以跳过前两节,继续阅读后面的内容。

什么是 JSON

首先,JSON 的全称叫做JavaScript Object Notation,翻译成中文就是JavaScript 对象表示法,是一种轻量级的数据交互格式。

JSON 数据分为三种形式,对象,数组,值。

对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)分隔。

数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。

值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

下面是一个简单的例子:

{ "firstname": "San", "lastname" : "Zhang", "age": 21, "friends": ["Mark","Li"] }

上面的数据示例,表示了这样一个结构,首先我们的数据被一对大括号包围,那么我们的数据就是对象类型,然后它里面有四个属性,firstname,lastname,age,friends。 其中前两个属性firstname和lastname字符串类型,他们的值分别是San和Zhang。age属性代表年龄,所以它的值一个Number类型的21。

注意一下,字符串类型和数字类型的区别,字符串类型的值用一对双引号括了起来,而数值类型不需要双引号。

最后,friends属性的值是一个数组,用一对中括号包围起来,而数组中的元素,仍然是字符串类型。

以上就是 JSON 的一个基本结构,关于 JSON 更详细的介绍,可以参看json.org

JSON 数据实例

我们看完了 JSON 的格式之后,那么我们就接着看一下具体的 JSON 数据是怎样的格式呢?

比如这个天气数据接口:?q=China,bj&lang=zh_cn

如果我们在浏览器打开这个地址,我们就可以看到类似这样的数据:

{ "coord": { "lon": 116.4, "lat": 39.91 }, "weather": [ { "id": 520, "main": "Rain", "description": "阵雨", "icon": "09d" }, { "id": 701, "main": "Mist", "description": "薄雾", "icon": "50d" } ], "base": "stations", "main": { "temp": 300.39, "pressure": 1008, "humidity": 94, "temp_min": 297.15, "temp_max": 303.71 }, "visibility": 2300, "wind": { "speed": 1, "deg": 140 }, "clouds": { "all": 75 }, "dt": 1437281131, "sys": { "type": 1, "id": 7405, "message": 0.0136, "country": "CN", "sunrise": 1437253268, "sunset": 1437305986 }, "id": 1816670, "name": "Beijing", "cod": 200 }

我们来简单看一下,数据整体使用一对大括号包围的,也就是说返回给我们的数据,是一个JSON 对象紧接着,这个对象包含了coord属性,这个属性的值又是一个对象,里面有两个属性 'lon' 和 'lat' 代表地理位置,后面还有很多其他属性代表天气的数据。

JSON 数据格式,可以很结构化的表示出天气的信息。而且数据结构一目了然,非常的清晰。并且有很多在线工具可以帮助大家更好的编辑和查看 JSON 数据。
比如

Swift 中处理 JSON 数据

我们在了解过 JSON 数据后,就继续我们的主题吧。

使用 NSJSONSerialization

Swift 中处理JSON数据方式有很多种。首先,由于 Swift 可以引用 Cocoa 原生库,所以我们可以用 Cocoa 中的NSJSONSerialization来处理JSON数据,这个类也很好理解,它会将JSON数据,转换成 Cocoa 中的NSDictionary和NSArray。我们来看一下如何用NSJSONSerialization来处理:

let APIURL = "http://api.openweathermap.org/data/2.5/weather?q=China,bj&lang=zh_cn" if let url = NSURL(string: APIURL) { if let jsonData = NSData(contentsOfURL: url) { if let jsonObj:NSDictionary = NSJSONSerialization.JSONObjectWithData(jsonData, options: NSJSONReadingOptions.allZeros, error: nil) as? NSDictionary{ if let weathers:NSArray = jsonObj["weather"] as? NSArray { var weatherSummary = "北京天气情况:" for weather in weathers { if let desc:String = weather["description"] as? String { weatherSummary += desc + " " } } print(weatherSummary) } } } }

让我们来逐个讲解。

首先,我们通过let url = NSURL(string: APIURL)来讲天气接口包装成 NSURL。 然后,我们使用let jsonData = NSData(contentsOfURL: url)将这个 URL 的内容读取下载,存放到NSData中。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Jquery - jquery 循环输出json数据实例

    Jquery - jquery 循环输出json数据实例

    2017-01-26 09:00

  •  extJs 2.1学习札记(JSON序列化篇)

    extJs 2.1学习札记(JSON序列化篇)

    2017-01-25 15:00

  • ASP.NET不拖控件教程(1)-认识JSON

    ASP.NET不拖控件教程(1)-认识JSON

    2017-01-24 17:00

  • Json学习笔记(二)

    Json学习笔记(二)

    2017-01-24 17:00

网友点评